知乎大佬描述
本人是设置的在console中输出所有日志信息
在error.log文件中只记录报错
在default 文件中记录所有日志
并且都是在五个日志文件后,从第一个文件开始覆盖数据
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # 是否禁用已经存在的日志器
'formatters': {
'standard': { # 日志格式
'format': '%(asctime)s [%(module)s:%(funcName)s] '
'[%(levelname)s]- %(message)s'},
},
'filters': { # 对日志进行过滤
'require_debug_false': { # django在非debug模式下输出日志
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': { # django在debug模式下输出日志
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': { # 日志处理方法
'console': { # 向终端中输出日志
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
'error': { # 向文件中输出日志
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(os.path.dirname(BASE_DIR), 'test1/logs/qilunji_err.log'), # 日志文件位置
'formatter': 'standard',
'maxBytes': 1024*30*1024, # 日志文件大小30M
'backupCount': 5, # 超过五个文件从第一个开始覆盖
'encoding': 'utf-8',
},
'default': { # 向文件中输出日志
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(os.path.dirname(BASE_DIR), 'test1/logs/qilunji_default.log'), # 日志文件位置
'formatter': 'standard',
'maxBytes': 1024*30*1024, # 日志文件大小30M
'encoding': 'utf-8',
},
# 'sentry': {
# 'level': 'ERROR',
# 'filters': ['require_debug_false'],
# 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler'
# },
},
'loggers': { # 日志器
'django': { # 定义了一个叫django的日志器
'handlers': ['console', 'error', 'default'], # 可以同时向终端文件中输入日志
'level': 'INFO', # 日志器接收的最低日志级别
'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统
},
},
}