我只想能够覆盖设置文件中的控制台日志级别。我阅读了django 日志记录文档,但我无法让日志记录按照我的意愿进行。该文件向我保证:
“从 Django 1.5 开始,项目的日志记录配置与 Django 的默认配置合并,因此您可以决定是否要添加或替换现有配置。要完全覆盖默认配置,请在 LOGGING dictConfig 中将 disable_existing_loggers 键设置为 True . 或者,您可以重新定义部分或全部记录器。”
所以我尝试将以下内容添加到我的 settings.py 中:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console':{
'level': 'DEBUG',
},
},
}
...但我得到一个例外:
<snip>
File "/usr/lib/python2.7/logging/config.py", line 575, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'console': 'NoneType' object has no attribute 'split'
很公平。它似乎想要整个配置块。所以我尝试了我认为最简单的控制台记录器配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'console':{
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
},
'loggers': {
'default': {
'handlers': ['console'],
'level': 'INFO',
'filters': []
}
}
}
我的意图是将日志级别设置为 INFO,但我仍然看到一堆 DEBUG 消息,并且字符串 MYFORMATTER 无论如何都没有出现在其中任何一个中。
最后,带着盲目的乐观,我尝试了这个:
from django.utils.log import DEFAULT_LOGGING
DEFAULT_LOGGING['handlers']['console']['level'] = 'INFO'
我必须在这里遗漏一些非常明显的东西。
顺便说一句,我使用的是 Django 1.5.1。