【问题标题】:Unable to see logging messages in django using the logging module无法使用日志模块在 django 中查看日志消息
【发布时间】:2019-05-27 07:39:18
【问题描述】:

我是日志记录的新手。我添加了用于登录我的views.py 文件的代码,并根据我的settings.py 文件中的django 文档添加了设置。但是,logging.txt 文件在DEBUG 级别显示其他异常或在WARNING 级别没有输出。该网站运行正常,我在 EC2 实例上运行。

这是我的 views.py 文件中的代码:

import logging

# Get an instance of a logger
logger = logging.getLogger(__name__)

def index(request):
    ...
    logger.error("THIS IS A LOG ERROR!!!")
    logger.warning("THIS IS A LOG WARNING!!!")

    ...
    return render(...)

这是我的 settings.py 文件中的代码:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'logging.txt',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

我做错了什么?

【问题讨论】:

    标签: django nginx logging gunicorn


    【解决方案1】:

    您配置的记录器名为 django,它将匹配顶级 django 包下的所有代码 - 本质上是 Django 框架代码。

    对于您自己的代码,您需要根据应用的名称配置一个单独的记录器,该记录器将应用于在该应用内的任何模块中使用logging.getLogger(__name__) 创建的记录器。例如,如果您的应用名为myapp

    'myapp': {  # Will apply to myapp/views.py, myapp/models.py etc.
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    }
    

    此外,配置一个根记录器是一个好主意,它充当“包罗万象”以记录任何与显式记录器不匹配的消息。您可以将根记录器设置为ERROR,这样您就不会错过来自系统任何部分的任何错误。您使用空字符串作为根记录器的名称。

    '': {
        'handlers': ['file'],
        'level': 'ERROR',
    }
    

    所以大家一起来:

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'file': {
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': 'logging.txt',
            },
        },
        'loggers': {
            'django': {  # Logger for Django framework code
                'handlers': ['file'],
                'level': 'DEBUG',
                'propagate': True,
            },
            'myapp': {  # Specific logger for your app
                'handlers': ['file'],
                'level': 'DEBUG',
                'propagate': True,
            },
            '': {  # Catch-all root logger
                'handlers': ['file'],
                'level': 'ERROR',
            },
        },
    }
    

    【讨论】:

    • 我已将记录器添加到我的应用程序中,但除了关注之外,我没有收到其他日志。 Not Found: /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php Not Found: /api/jsonws/invoke Not Found: /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php Not Found: /index.php Not Found: /mifs/.;/services/LogService Not Found: /console/ Not Found: /wp-content/plugins/wp-file-manager/readme.txt Not Found: /Autodiscover/Autodiscover.xml Not Found: /_ignition/execute-solution Not Found: /favicon.ico
    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2014-01-24
    • 2015-06-03
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多