我试图在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 . 有任何想法吗?
Edit: 如果我直接在 Logger 上设置日志级别,它可以工作:
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 . 这是正确的行为还是我还缺少什么?
2 回答
你需要添加例如
与
django.request
条目并行,或与'loggers'条目并行 . 这将确保在您实际使用的 Logger 上设置级别,而不仅仅是
django.request
Logger .Update: 要显示所有模块的消息,只需在
django.request
旁边添加条目以包含您的顶级模块,例如:api
,handlers
,core
或其他什么 . 因为你没有更具体的 .我通过改变来修复它
至:
例如,将所有消息记录到控制台: