gpt4 book ai didi

django - 在 Django 中添加自定义日志记录

转载 作者:行者123 更新时间:2023-12-02 07:59:31 24 4
gpt4 key购买 nike

我已将以下日志记录配置添加到我的 Django 应用程序的 settings.py文件:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
},
},
}

现在,我只想在 views.py 中的一个 View 中添加一些自定义日志记录。 ,但似乎记录器是 NOTSET ,这意味着只有 warning 的级别和更高的记录:
import logging
from django.http import JsonResponse

logger = logging.getLogger(__name__)

def testing(request):
logger.info("Doesn't show...")
logger.warning(f"Log Level: {logger.level} = {logging.getLevelName(logger.level)}")
return JsonResponse({"Hello": "World"})

上面的代码片段记录了以下内容:
Log Level: 0 = NOTSET

难道我做错了什么?为什么没有设置记录器的级别(即使我在 settings.py 中明确设置了它)?

最佳答案

为什么会有这种行为?

logging.getLogger(__name__) 语句将使用 初始化一个 python 记录器当前模块的虚线路径 .在您的情况下,它将是 my_app.views . Django 无法理解您从 创建的日志。 views.py 由于您的记录器名称 my_app.views 未在 中列出settings.py .如果没有指定 ,Django 不会对日志做任何事情。记录器名称/记录器名称模式 因此。

如何warning显示日志?

我希望这个所以发布这个解释很好,Python logging not outputting anything

解决方案

选项1

更改您的记录器名称 settings.py

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
},
'loggers': {
'my_app.views': {
'handlers': ['console'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
},
},
}

关键变更:我已更改记录器名称 django my_app.views

选项 2

指定 记录器名称 getLogger 方法
logger = logging.getLogger('django')

重点:记录器的名称和在 Django 设置模块中定义的记录器应该相同。

关于django - 在 Django 中添加自定义日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254843/

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