Python/django 根记录器级别

标签 python django logging

在我的 django 项目中,我有以下 LOGGING 配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(name)s %(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class':'django.utils.log.NullHandler',
        },
        'sentry': {
            'level': 'DEBUG',
            'class': 'sentry.client.handlers.SentryHandler',
            'formatter': 'verbose'
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        }
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'INFO',
            'propagate': False,
        },
        '': {
            'level': 'ERROR',
            'handlers': ['console'],
        },
    },
}

运行 manage.py migrate 时,我在控制台中仍然有很多调试信息,例如:

DEBUG south 2011-08-08 11:22:23,847 generic 19539 140735078710464 south execute "..."

当我将根记录器级别设置为 ERROR 时,我预计控制台中只会出现错误消息。我做错了什么?

更新

看起来问题出在 south.logger 模块中:

import sys
import logging
from django.conf import settings

# Create a dummy handler to use for now.
class NullHandler(logging.Handler):
    def emit(self, record):
        pass

_logger = logging.getLogger("south")
_logger.addHandler(NullHandler())
_logger.setLevel(logging.DEBUG)

删除 _logger.setLevel(logging.DEBUG) 后,日志记录按预期工作。

谁能解释一下这种奇怪的行为?

最佳答案

South 开发人员不应该真正将其顶级记录器级别设置为 DEBUG。事实上,如果他们根本不设置它,它将继承根记录器的级别,这通常由应用程序开发人员定义(在这种情况下,我猜是你)。

我建议您在相关的 South 论坛上将此作为错误报告。

关于Python/django 根记录器级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6985251/

相关文章:

python - bs4 返回变量名称但不返回内容

python - 使用 PyCrypto 进行 AES 加密,使用 mcrypt 进行解密

python - Django 在 AWS 上安装失败

django - PostgreSQL 日期格式

java - 如何自定义 log4j2 RollingFileAppender?

Python OpenCV - 从一组轮廓点外推最大的矩形

django - 模型实例 fixture 未保留在数据库中

python - 捕获 PyQt 异常

.NET 记录器库。你的选择

python - 如何将字典键与模型 ID 匹配