管理命令的单独日志记录

2024-05-17 00:52:29 发布

您现在位置:Python中文网/ 问答频道 /正文

如何配置Django中的日志记录,以便在默认情况下对所有WARNING和更高的消息使用Sentry,但当我运行管理命令时,将其降低到INFO并添加控制台记录器?在

在正常操作中(通过mod python或uWSGI运行站点),我只关心WARNING及更高版本。但是,我们有一些通过cronjobs运行的管理命令,我也希望在日志文件中收集它们的INFO消息(在管理命令中,也在更深层的代码中)。有些管理命令来自外部库,我不希望更改它们(在那里添加额外的初始化)。理想情况下,我希望在设置模块中检测我们是通过manage.py还是通过WSGI运行。在

我当前LOGGING的相关部分:

    'root': {
        'level': 'WARNING',
        'handlers': ['sentry'],
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
        }.
        'sentry': {
            'level': 'WARNING',
            'class': 'raven.contrib.django.handlers.SentryHandler',
        },
    },

Tags: django命令infomod消息handlers记录情况
2条回答

一种非常粗糙的方法:修改manage.py在环境中添加一些内容,并在设置模块中检测到这一点。在

manage.py中:

import os
os.environ['DJANGO_IS_MANAGEMENT_COMMAND'] = '1'

在设置模块中:

^{pr2}$

这也会在运行Celery workers时添加记录器,但我认为守护进程没有stdout,所以这无关紧要?在

您可以对管理命令使用不同的设置./manage.py my_task settings=proj.settings.management,对吗?所以你只需覆盖日志记录部分并从原始设置文件“继承”其余部分。。。还是我在你的问题上漏掉了一点?在

相关问题 更多 >