django日志配置2

django框架 2020-09-03 1109

仅将调用记录放入代码中是不够的。您还需要配置记录器,处理程序,过滤器和格式化程序,以确保可以使用记录输出。

Python的日志记录库提供了几种配置日志记录的技术,范围从编程接口到配置文件。默认情况下,Django使用dictConfig格式

为了配置日志记录,您可以使用LOGGING定义日志记录设置的字典。这些设置描述了您希望在日志记录设置中使用的日志记录器,处理程序,过滤器和格式化程序,以及希望这些组件具有的日志级别和其他属性。

默认情况下,使用以下方案将LOGGING设置与Django的默认日志记录配置合并。

django文档关于日志配置部分:https://docs.djangoproject.com/en/3.1/topics/logging/

文档中还有很多已存在的配置,包含内置的loger和handler等,

可以访问:https://docs.djangoproject.com/en/3.1/topics/logging/#id4,https://docs.djangoproject.com/en/3.1/topics/logging/#id3

1.setting.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    # 格式器
    'formatters': {
        # 可以配置多个格式器
        'standard': {  # 指定格式器的名称
            'format': '%(asctime)s [%(threadName)s: %(thread)d]'
                      '%(pathname)s:%(funcName)s:%(lineno)d %(levelname)s - %(message)s'
        }
    },
    # 过滤器
    'filters': {
        'test': {  # 过滤器名称
            '()': 'utils.custom_log.CustomLogFilter',
        }
    },
    # 处理器
    'handlers': {
        # 终端处理器
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        # 文件处理器
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 1024*1024*10,  # 10M
            'backupCount': 5,  # 会依次创建5个日志文件,5个文件全部存满5M后会开始覆盖之前的文件
            'formatter': 'standard',
            'filename': './debug.log',  # 日志路径
            'encoding': 'utf-8',
        },
    },
    # 记录器
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'filters': ['test'],
            'level': 'INFO',
            'propagate': True,
        },
    },
}

2.自定义过滤器

utils/custom_log.py

import logging


class CustomLogFilter(logging.Filterer):
    def filter(self, record: logging.LogRecord) -> bool:
        if 'aaa' in record.msg: # 字符aaa在日志中时,不记录
            return False
        return True

 

标签:django框架

文章评论

评论列表

已有0条评论