Django2 日志配置分析

无情 阅读:316 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.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
KIKK导航

KIKK导航

排行榜
关注我们

一个IT知识分享的公众号