【发布时间】:2013-08-31 17:15:09
【问题描述】:
所以我的 Django 项目中有两个记录器。一种用于身份验证失败,另一种包括那些但还包括编辑某些内容时的消息(基本上我有一个记录器命令的所有内容)。 但是,在我想同时使用两个记录器的模块中,我似乎有点问题。我的两个记录器当前定义如下:
'': {
'handlers': ['file'],
'level': 'INFO',
'propagate': True,
},
'auth': {
'handlers': ['file_auth'],
'level': 'CRITICAL',
'propagate': True,
}
我的处理程序是:
'file': {
'level': 'INFO',
'class': 'logging.FileHandler',
'filename': '/home/debug.log',
'formatter': 'simple',
},
'file_auth': {
'level': 'CRITICAL',
'class': 'logging.FileHandler',
'filename': '/home/debug2.log',
'formatter': 'verbose',
},
在我的 Django 视图的顶部,我有
import logging
logger = logging.getLogger('')
logger = logging.getLogger('auth')
然后在一个视图中我有一个 logger.info(message)。 如果我将其更改为 logger.critical(message),则该消息会出现在两个日志文件中,但如果它仍然是 logger.info,则什么都不会发生。
(可能是无用的信息...在 settings.py 中我的 LOGGING 部分的开头,我有:
'version': 1,
'disable_existing_loggers': False,
不确定它们是否有任何相关性。但以前我一直在努力让错误出现在两个文件中,直到我改变了引入它们的顺序,这神奇地改变了东西 - 我真的不明白为什么这会有所作为)
如果有人能帮助我,我将不胜感激......可能真的很简单,但我必须承认我并不真正理解它是如何工作的......
【问题讨论】:
-
Python logger 是一个 Singleton,看看这个:stackoverflow.com/questions/18117547/…
-
抱歉,我不确定这有什么帮助。我打电话给两个不同的记录器对吗? logger = logging.getLogger('') 和 logger=logging.getLogger('auth')....哦,我明白了...我刚刚用第二个覆盖了第一个?所以我应该称它们为 logger1 和 logger2,或者至少给它们起不同的名字?