我有一个Flask web应用程序,Python日志配置是在应用程序启动时通过dictConfig完成的。用于将特定日志写入数据库的处理程序附加到记录器'test.module'只有在应用程序启动时也调用logging.basicConfig(level=logging.DEBUG)
时,对该记录器所做的日志才写入数据库。否则,不会将日志写入数据库。我知道basicConfig只是将一个streamHandler附加到根记录器。我认为这应该是无关紧要的,因为我不希望root logger做任何事情。为什么没有basicConfig这不起作用?没有basicConfig的日志处理程序无法正常工作
我添加了如何在下面启动记录器和我的配置。
class DbHandler(logging.Handler):
def __init__(self, level=logging.NOTSET):
logging.Handler.__init__(self, level)
def emit(self, record):
record.message = self.format(record)
log = DbModel()
log.message = record.message
log.save()
LOGGING = {
'version': 1,
'handlers': {
'db_log': {
'level': 'DEBUG',
'class': 'test.handlers.DbHandler',
},
},
'loggers': {
'test.important_module': {
'handlers': [
'db_log'
],
},
}
# logging.basicConfig(level=logging.DEBUG) # Doesnt work without this
logging.config.dictConfig(LOGGING)
logger = logging.getLogger('test.important_module')
logger.info('Making a test')
你能使用的是设置记录器,以及如何,涉及到的代码进行实际记录的代码?目前为止你提供的内容有些模糊...... – isedev 2013-02-19 13:39:32
@isedev我现在加了它 – refik 2013-02-19 13:53:44
仅仅从可用性的角度来看,我会重新考虑修改'record.message'作为副作用。只需直接设置'log.message = self.format(record)'。 – 2013-02-19 14:06:50