北京怎样在社保网站上做减员,seo排名点击软件运营,公司变更地址需要多少费用,wordpress host头攻击在Django中配置日志的方法非常简单#xff0c;只需要在 setting 文件中添加配置项#xff0c;系统会自动生成相应的日志文件#xff0c;也可以配置调试时显示内容#xff0c;报错发送邮件等操作。
在setting.py中添加以下配置。
# 日志配置
LOGS_DIRS os.path.join(BASE…
在Django中配置日志的方法非常简单只需要在 setting 文件中添加配置项系统会自动生成相应的日志文件也可以配置调试时显示内容报错发送邮件等操作。
在setting.py中添加以下配置。
# 日志配置
LOGS_DIRS os.path.join(BASE_DIR, logs,django)
if not os.path.exists(LOGS_DIRS):os.makedirs(LOGS_DIRS)SPIDER_LOGS_DIRS os.path.join(BASE_DIR, logs,spider)
if not os.path.exists(SPIDER_LOGS_DIRS):os.makedirs(SPIDER_LOGS_DIRS)LOGGING {version: 1, # 使用的日志模块的版本目前官方提供的只有版本1但是官方有可能会升级为了避免升级出现的版本问题所以这里固定为1disable_existing_loggers: False, # 是否禁用其他的已经存在的日志功能肯定不能有可能有些第三方模块在调用所以禁用了以后第三方模块无法捕获自身出现的异常了。formatters: { # 日志格式设置verbose或者simple都是自定义的verbose: { # 详细格式适合用于开发人员不在场的情况下的日志记录。# levelname 日志等级# asctime 发生时间# module 文件名# process 进程ID# thread 线程ID# message 异常信息format: {levelname} {asctime} {module} {process:d} {thread:d} {message},style: {, # 变量格式分隔符},spiderformat: { # 详细格式适合用于开发人员不在场的情况下的日志记录。format: {levelname} {asctime} {message},style: {,},simple: { # 简单格式适合用于开发人员在场的情况下的终端输出format: {levelname} {message},style: {,},standard: {format: %(levelname)s %(asctime)s %(pathname)s %(filename)s %(module)s %(funcName)s %(lineno)d: %(message)s}, # 对日志信息进行格式化每个字段对应了日志格式中的一个字段更多字段参考官网文档我认为这些字段比较合适输出类似于下面的内容},filters: { # 过滤器require_debug_true: {(): django.utils.log.RequireDebugTrue,},},handlers: { # 日志处理流程console或者mail_admins都是自定义的。console: {level: DEBUG, # 设置当前日志处理流程中的日志最低等级filters: [require_debug_true], # 当前日志处理流程的日志过滤class: logging.StreamHandler, # 当前日志处理流程的核心类StreamHandler可以帮我们把日志信息输出到终端下formatter: simple # 当前日志处理流程的日志格式},# mail_admins: {# level: ERROR, # 设置当前日志处理流程中的日志最低等级# class: django.utils.log.AdminEmailHandler, # AdminEmailHandler可以帮我们把日志信息输出到管理员邮箱中。# filters: [special] # 当前日志处理流程的日志过滤# }file: {level: WARNING,class: logging.handlers.TimedRotatingFileHandler,# 日志位置,日志文件名日志保存目录logs必须手动创建filename: %s/django.log % LOGS_DIRS,# TimedRotatingFileHandler的参数# 目前设定每天一个日志文件# S | 秒# M | 分# H | 时# D | 天# W0-W6 | 周一至周日# midnight | 每天的凌晨when: D, # 间间隔的类型指定秒就不要在Windows上运行测试interval: 1, # 时间间隔backupCount: 5, # 能留几个日志文件;过数量就会丢弃掉老的日志文件encoding: utf-8, # 日志文本编码formatter: verbose # 当前日志处理流程的日志格式},spiderfile: {level: INFO,class: logging.handlers.TimedRotatingFileHandler,filename: %s/spider.log % SPIDER_LOGS_DIRS,when: H, # 间间隔的类型指定秒就不要在Windows上运行测试interval: 1, # 时间间隔backupCount: 90, # 能留几个日志文件;过数量就会丢弃掉老的日志文件encoding: utf-8, # 日志文本编码formatter: spiderformat # 当前日志处理流程的日志格式},},loggers: { # 日志处理的命名空间django: {handlers: [console, file], # 当基于django命名空间写入日志时调用那几个日志处理流程propagate: True, # 是否在django命名空间对应的日志处理流程结束以后冒泡通知其他的日志功能。True表示允许},spider: {level: INFO,handlers: [console, spiderfile], # 当基于django命名空间写入日志时调用那几个日志处理流程propagate: False, # 是否在django命名空间对应的日志处理流程结束以后冒泡通知其他的日志功能。True表示允许},}
}配置中主要的是以下四个大的配置项。
formatters日志的格式器配置日志的打印及写入格式 filters过滤器、配置需要显示日志的路由 handlers处理器配置日志的处理方式包括写入文件配置、调试打印配置、发送邮件配置等 loggers日志处理员我起的名字,可以配置多个不同的日志处理角色进行不同的操作。 在文件中使用logger 首先导入logging库并调用在setting.py中配置的loggers
import logging
splogger logging.getLogger(spider)
在需要调用日志的地方添加代码
splogger.info(开始同步)
splogger.warning(未打开页面重新打开)
splogger.error(同步失败)
这个是自动生成的日志文件。 还遇到个问题是正常启动没问题但是按时间分隔日志文件的时候报错。
启动的时候需要加个参数
python manage.py runserver 0.0.0.0:80 还有个简单的启动方法
在项目根目录下创建一个run.py文件在里面添加以下代码每次启动时只需要启动这个文件就可以没必要每次都输命令。
import osif __name__ __main__:os.system(python manage.py runserver 0.0.0.0:80)# os.system(python manage.py runserver 0.0.0.0:80 --noreload)