python - 在 python 中配置根记录器

标签 python django logging

我的 Django 设置中有以下日志记录配置。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format':
              '%(levelname)s|%(asctime)s|%(name)s>> %(message)s',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        }
    },
    'loggers': {
         '': {
            'handlers': ['console'],
            'level': 'ERROR',
            'propagate': True,
         },
        'apps': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
    }
}

使用此配置,我希望我的“应用程序”以 DEBUG 级别记录,而任何其他模块仅记录 ERROR 及以上级别。但是我看到来自其他模块的 DEBUG 消息。我该如何解决?

最佳答案

您是否在 LOGGING['loggers'] 中使用空字符串键来匹配根记录器?如果是这样,您可以试试这个。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format':
              '%(levelname)s|%(asctime)s|%(name)s>> %(message)s',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        }
    },
    'loggers': {
        'apps': {
            'handlers': ['console'],
            'level': 'DEBUG',
        }
    },
    'root': {
       'handlers': ['console'],
       'level': 'ERROR'
    }
}

关于python - 在 python 中配置根记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21021704/

相关文章:

python - Django pymssql 迁移

django - 将应用程序级别的用户名/用户 ID 注入(inject) nginx/Apache 日志

python - 计算每个id上周的平均访问次数而不循环

python - 可视化和聚类

python - 仅使用线性代数执行经过训练的 tensorflow 模型

python - 当出现异常时捕获 subprocess.Popen 的标准输出

ruby-on-rails - Lift 框架是 "easy"还是 Ruby on Rails 或 Django?

python - Django 教程重新加载模块

java - google eclipse插件创建的log4j.properties和logging.properties有什么区别?

ruby-on-rails - Rails 5 logstash 产生太多的日志项而不是一个