【发布时间】:2013-11-12 07:13:31
【问题描述】:
我试图在 Django 中将调试级别更改为 DEBUG,因为我想在我的代码中添加一些调试消息。好像没什么效果。
我的日志配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'simple'
},
},
'loggers': {
'django.request':{
'handlers': ['console'],
'propagate': False,
'level': 'DEBUG',
},
},
}
代码:
import logging ; logger = logging.getLogger(__name__)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")
logger.warn("THIS ONE IS")
控制台输出:
WARNING:core.handlers:THIS ONE IS
我也尝试在我的设置文件中设置 DEBUG = False 和 DEBUG = True。有什么想法吗?
编辑:如果我直接在记录器上设置日志级别,它可以工作:
import logging ; logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")
输出:
DEBUG:core.handlers:THIS MESSAGE IS NOT SHOWN IN THE LOGS
WARNING:core.handlers:THIS ONE IS
但是:配置文件似乎完全被忽略了。即使我将配置中的两个条目都设置回 ERROR,它也会打印两个语句 always。这是正确的行为还是我仍然遗漏了什么?
【问题讨论】:
-
快速查看:
logger.warn("Log level is set to {0}".format(logging.getLevelName(logger.level))) -
警告:core.handlers:日志级别设置为 NOTSET。所以默认级别是警告,对吧?为什么 Django 不根据我的设置相应地更改它?
-
眨眼 呵呵。我什么都没有。在我看来,您所做的一切都是正确的。
-
我根据您的评论更新了我的答案。
标签: python django logging configuration-files