gpt4 book ai didi

Django 不记录任何低于警告级别的内容

转载 作者:行者123 更新时间:2023-12-03 08:30:10 26 4
gpt4 key购买 nike

我不确定为什么 django 不记录任何低于“警告”级别的内容。我在 View 中有这段代码:

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() 不应该获取设置中声明的记录器吗?我应该如何在我的 View 中导入该记录器?

此外,尝试按照下面的答案建议将记录器添加到 dict 键的顶层 ('app_logger': {"level": "DEBUG", "handler": "console"},)它不起作用。

最佳答案

您构建了一个新的记录器:

logger = logging.getLogger(<b>__name__</b>)

__name__ has value [geeksforgeeks.org] :

If the source file is executed as the main program, the interpreter sets the __name__ variable to have a value "__main__". If this file is being imported from another module, __name__ will be set to the module's name.

因此,您将构造一个名为 __main__ 的记录器,或者一个名为模块名称的记录器。但这些不是您在 settings.py 中定义的记录器,这是一个记录器。

另一个问题是:您不使用记录器,而是使用日志记录,因此“根”记录器,您应该替换:

    <s>logging</s>.info('INFO PROFILE DATA!!')

与:

    <b>logger</b>.info('INFO PROFILE DATA!!')

例如,我们可以使用 root 记录器:

import logging

logger = logging.getLogger(<b>'root'</b>)

def profile_data(request):
<b>logger</b>.info('INFO PROFILE DATA!!')
<b>logger</b>.debug('DEBUG PROFILE DATA!!')
<b>logger</b>.warning('WARNING PROFILE DATA!!')
<b>logger</b>.error('ERROR PROFILE DATA!!')

关于Django 不记录任何低于警告级别的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65362608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com