【问题标题】:Why is Django sending duplicate error messages after upgrade to v2.2?为什么升级到 v2.2 后 Django 会发送重复的错误消息?
【发布时间】:2019-11-14 12:08:33
【问题描述】:

1.8 版本升级到Django 2.2 后,我的应用开始收到重复的错误消息。每个错误,无论是什么类型,现在都会发送到我的ADMINS 电子邮件两次。

我在Heroku 上运行我的应用程序并尝试了他们的支持,但他们确定这与我的应用程序有关。我一直无法在网上或stackoverflow 上找到类似的问题。

我的日志配置

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

更新

我能够在我的本地服务器上复制它,并注意到当我在 loggers 设置中将 'propagate': True, 更改为 False 时,双重电子邮件停止了。来自docs

可以在每个记录器的基础上控制这种传播。如果您不希望特定记录器传播到其父级,则可以关闭此行为。

但是,我仍然不确定我的最佳解决方案应该是什么。我担心设置传播到False 不会解决根本原因。

【问题讨论】:

  • 你有 LOGGING_CONFIG = None 吗?如果没有,那么您可能正在传播到禁用的根记录器,并收到第二封电子邮件。
  • 完美!我在设置顶部添加了LOGGING_CONFIG = Noneimport logging.config,在自定义日志配置后添加了logging.config.dictConfig(LOGGING),现在不再收到重复的消息。如果您创建一个答案,我会接受 - 否则,我会写一个。

标签: python django python-3.x error-handling


【解决方案1】:

感谢@gregory 提出将LOGGING_CONFIG = None 包含在我的设置中的建议。根据docs

这将禁用 Django 的默认日志记录的配置过程。

最终工作代码:

import logging.config

LOGGING_CONFIG = None

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

logging.config.dictConfig(LOGGING)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2013-12-18
    • 2013-09-03
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    相关资源
    最近更新 更多