要在Python的logging模块中配置两个日志文件,一个用于记录所有级别的日志,另一个专门用于记录ERROR级别的日志,你可以在handlers部分添加一个新的handler配置。以下是修改后的配置代码:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {message}',
'style': '{',
},
'simple': {
'format': '{levelname} {message}',
'style': '{',
},
'error': { # 新增一个formatter专门用于ERROR日志
'format': '{levelname} {asctime} {module} {message}',
'style': '{',
},
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 1024*1024*5, # 5 MB
'filename': 'debug.log', # 假设日志文件名为debug.log
'backupCount': 5,
'formatter': 'verbose',
},
'error_file': { # 新增一个handler专门用于ERROR日志
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 1024*1024*5, # 5 MB
'filename': 'error.log', # 假设日志文件名为error.log
'backupCount': 5,
'formatter': 'error', # 使用上面定义的error formatter
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
},
'loggers': {
'clamav': {
'handlers': ['file', 'error_file', 'console'], # 将两个文件handler和console handler都添加到logger中
'level': 'INFO',
'propagate': False, # 避免日志信息向上传递到root logger
}
},
}
这段代码中,我添加了一个新的handler `error_file`,它专门用于记录ERROR级别的日志到`error.log`文件中。同时,我也为这个handler定义了一个新的formatter `error`,这样ERROR日志的格式可以与DEBUG日志的格式不同。最后,我将这个新的handler添加到了`clamav` logger的handlers列表中,并设置了`propagate`为`False`,以防止日志信息向上传递到root logger。