我正在尝试将ERROR / CRITICAL仅重定向到file1,并将DEBUG重定向到file2
我正在尝试以下方法。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(module)s %(message)s'
},
'simple' : {
'format': '%(levelname)s %(message)s'
}
},
'handlers': {
'fDebugHandler': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'formatter': 'verbose',
'filename': 'file1.log'
},
'fErrorHandler': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'formatter': 'verbose',
'filename': 'file2.log'
},
},
'loggers': {
'vpe_default': {
'handlers': ['fDebugHandler', 'fErrorHandler'],
'level': 'DEBUG',
'propagate': True,
},
}
}
这里的问题是file1中的所有调试信息,也出现在file2中。由于记录器级别,这是显而易见的。
是否有任何方法可以获得仅 DEBUG 或仅 ERROR 等功能。 DEBUG
答案 0 :(得分:0)
您可以自己编写filters(来自python docs的更多信息)。
从文档中,您可以执行以下操作:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(module)s %(message)s'
},
'simple' : {
'format': '%(levelname)s %(message)s'
}
},
'filters': {
'excludedebugmsgs': {
'()': 'yourproject.logging.ExcludeDebug',
}
},
'handlers': {
'fDebugHandler': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'formatter': 'verbose',
'filename': 'file1.log'
},
'fErrorHandler': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'formatter': 'verbose',
'filename': 'file2.log',
'filters': ['excludedebugmsgs']
},
},
'loggers': {
'vpe_default': {
'handlers': ['fDebugHandler', 'fErrorHandler'],
'level': 'DEBUG',
'propagate': True,
},
}
}
然后您需要根据python docs
撰写yourproject.logging.ExcludeDebug
Django文档中有一些examples。