在Django/python日志中传播条目

2024-04-29 04:42:07 发布

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

我正在寻找一个关于propagate是真是假之间区别的实际解释。以下是我目前拥有的记录器:

LOGGING = {
    'formatters': {
        'default': {
            'format': '[%(asctime)s] %(filename)s:%(lineno)d@%(funcName)s [%(levelname)s] %(message)s',
        },
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'formatter': 'default'
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'default'
        },
    },
    'loggers': {
        'app': {
            'handlers': ['console', 'mail_admins'],
            'level': 'INFO',
            'propagate': True,
        },
    }
}

如果我将propagate设置为False,在上述情况下会发生什么?它还会向mail_admins发送消息,还是只使用第一项?除了这里django文档中所说的:https://docs.djangoproject.com/en/2.1/topics/logging/之外,这两种设置之间到底有什么区别。你知道吗


Tags: djangodefaultformatterlogginghandlersmaillevelclass