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

标签 django logging django-settings django-logging

我已将以下日志记录配置添加到我的 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/

相关文章:

mysql - Django 日志文件与 MySql 数据库

Django - 尝试访问时出错

python - 我怎样才能跟随一个 Django 反向外键,然后跟随另一个反向外键?

java - Junit 测试方法的日志输出是否正确?

Python从末尾读取文件,文件很大,无法读入内存

python - django.conf.global_settings 何时加载?

python - Django 中的设置在运行服务器时重复运行

python - 如何在使用自定义用户模型时修复 django admin 中的 "cannot unpack non-iterable NoneType object"错误

JavaScript/Firefox : "Failed to register/update ServiceWorker", 当没有使用名为 ServiceWorker 的内容时

python - Django:密码重置 ReverseMatch 错误