Django2 日志配置
无情
阅读:649
2021-03-31 18:17:21
评论:0
第一步:项目setting.py 配置日志记录
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # 是否禁用logger,建议设置为False
'formatters': { # 日志格式,提供给handler使用,非必须,如果不设置格式,默认只会打印消息体
'verbose': { # 格式名称
# INFO 2018-04-25 15:43:27,586 views 8756 123145350217728 这是一个日志
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
# INFO 这是一个日志
'format': '%(levelname)s %(message)s'
},
'standard': {
# 2018-04-25 16:40:00,195 [Thread-7:123145575223296] [myapp.log:282] [views:user_query_json_get] [INFO]-
# 这是一个日志
'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'
},
},
'filters': { # 过滤器,提供给handler使用,非必须
'require_debug_true': { # 要求DEBUG=True时才打印日志
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': { # 处理器,设置日志记录方式,必须
'console': { # 处理器名称
'level': 'DEBUG', # 设置级别
'filters': ['require_debug_true'], # 设置过滤器,多个用逗号分割
'class': 'logging.StreamHandler', # 处理器,这里是控制台打印
'formatter': 'verbose' # 设置日志格式
},
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler', # 记录到文件
'filename': 'E:/log/file.log',
'formatter': 'verbose'
},
'rotatingFile': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', # 按文件大小切割日志
# 'filename': 'log/all.log', # 日志输出文件 默认在当前项目根路径下
'filename': 'E:/log/rotatingFile.log', # 日志输出文件
'maxBytes': 1024 * 1024 * 5, # 每个文件大小
'backupCount': 5, # 保留日志份数,只保留最后5份,如果都保留,设置为0,默认就是0
'formatter': 'standard', # 使用哪种formatters日志格式
},
'timedRotatingFile': {
'level': 'DEBUG',
'class': 'logging.handlers.TimedRotatingFileHandler', # 按时间切割日志
'filename': 'E:/log/timedRotatingFile.log', # 日志输出文件
'when': 'D', # 按天分割
'backupCount': 5, # 保留日志份数,只保留最后5份,如果都保留,设置为0,默认就是0
'formatter': 'standard', # 使用哪种formatters日志格式
},
},
'loggers': {#日志记录器
'django': {
'handlers': ['console'],
'propagate': True,
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'), # 只有设置DEBUG = True时,该配置才会打印sql信息
},
'django.request': {
'handlers': ['rotatingFile'],
'level': 'ERROR',
'propagate': False, # 设置为False,表示不像其父级别传递日志内容
},
'myapp.log': { # 也可以这样创建logger对象,logging.getLogger('myapp.log')
'handlers': ['file', 'timedRotatingFile'],
'level': 'INFO', # 这里的日志级别不能低于处理器中设置的日志级别
},
},
}
代码中使用方式:
import logging logger = logging.getLogger('myapp.log')
# json 序列化 def json(request): book_list = Books.objects.all() logger.info('这是一个日志') return JSONUtil.render_json(book_list, safe=False)
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。