我只是希望能够覆盖设置文件中的控制台日志级别.我阅读了django日志记录文档,但是我在编写日志时遇到了我想要的问题.该文件向我保证:
"从Django 1.5开始,项目的日志配置与Django的默认值合并,因此您可以决定是否要添加或替换现有配置.要完全覆盖默认配置,请在LOGGING dictConfig中将disable_existing_loggers键设置为True或者你可以重新定义部分或全部记录器."
所以我尝试将以下内容添加到我的settings.py中:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console':{
'level': 'DEBUG',
},
},
}
Run Code Online (Sandbox Code Playgroud)
......但我得到一个例外:
<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'
Run Code Online (Sandbox Code Playgroud)
很公平.它似乎想要整个配置块.所以我尝试了我认为最简单的控制台记录器配置:
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': []
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的目的是将日志级别设置为INFO,但我仍然看到一堆DEBUG消息,并且字符串MYFORMATTER无论如何都不会出现在其中任何一个中.
最后,在盲目乐观的情况下,我尝试了这个:
from django.utils.log import DEFAULT_LOGGING
DEFAULT_LOGGING['handlers']['console']['level'] = 'INFO'
Run Code Online (Sandbox Code Playgroud)
我必须在这里遗漏一些非常明显的东西.
顺便说一下,我正在使用Django 1.5.1.
在这里回答我自己的问题,我最终在 settings.py 文件中使用了以下内容:
import logging
logging.basicConfig(
level = logging.INFO,
format = " %(levelname)s %(name)s: %(message)s",
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3413 次 |
| 最近记录: |