仅将调用记录放入代码中是不够的。您还需要配置记录器,处理程序,过滤器和格式化程序,以确保可以使用记录输出。
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
评论列表
已有0条评论