【发布时间】:2020-12-18 19:08:52
【问题描述】:
我不确定为什么 django 没有记录低于“警告”级别的任何内容。我在视图中有这段代码:
logger = logging.getLogger(__name__)
def profile_data(request):
logging.info("INFO PROFILE DATA!!")
logging.debug("DEBUG PROFILE DATA!!")
logging.warning("WARNING PROFILE DATA!!")
logging.error("ERROR PROFILE DATA!!")
这在我的 settings.py 中:
# Logging
LOGGING = {
'version': 1,
# Version of logging
'disable_existing_loggers': False,
'filters': {
# information regarding filters
},
'formatters': {
'<simple_format>': {
'format': '{levelname} {message}',
'style': '{',
}
},
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/logs/log_file1.log',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler'
},
},
'loggers': {
'django': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
},
'root': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
}
}
}
如您所见,我尝试将所有内容都设置为 DEBUG 级别,它不起作用,我只看到这是终端中的警告和错误级别:
WARNING:root:WARNING PROFILE DATA!!
ERROR:root:ERROR PROFILE DATA!!
编辑
将记录器声明更改为:
logger = logging.getLogger('app_logger')
调用:
logger.info("INFO PROFILE DATA!!")
当然还有新名称的设置:
'loggers': {
'app_logger': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
},
但它仍然只打印 WARNING 及以上。我什么时候声明一个新的记录器? logging.getLogger() 不应该在设置中声明记录器吗?我应该如何在我的视图中导入该记录器?
此外,尝试按照下面的答案 ('app_logger': {"level": "DEBUG", "handler": "console"},) 的建议将记录器添加到 dict 键的顶层,但它不起作用。
【问题讨论】:
-
你构建了一个 new 记录器,默认设置为
Warning。 -
“尝试按照以下答案的建议将记录器添加到 dict 键的顶层” - 我不建议这样做。我说过,要配置 root logger,您必须使用 dictConfig 顶层的“root”键。它不适用于任何记录器,仅适用于根记录器。嗯,好的,我会澄清一下 - 我看不是很清楚。
标签: django python-logging django-logging