【问题标题】:concise way to change django console log level更改 django 控制台日志级别的简洁方法
【发布时间】:2013-07-19 01:33:59
【问题描述】:

我只是希望能够覆盖设置文件中的控制台日志级别。我阅读了django logging document,但我无法让日志记录按照我的意愿进行。文档向我保证:

"从 Django 1.5 开始,项目的日志记录配置与 Django 的默认配置合并,因此您可以决定是否要添加或替换现有配置。要完全覆盖默认配置,请将 disable_existing_loggers 键设置为 True LOGGING dictConfig。或者,您可以重新定义部分或全部记录器。"

所以我尝试将以下内容添加到我的 settings.py 中:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level': 'DEBUG',
        },
    },
}

...但我得到一个例外:

<snip>
  File "/usr/lib/python2.7/logging/config.py", line 575, in configure
    '%r: %s' % (name, e))
ValueError: Unable to configure handler 'console': 'NoneType' object has no attribute 'split'

很公平。它似乎想要整个配置块。所以我尝试了我认为最简单的控制台记录器配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'console':{
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
    },
    'loggers': {
        'default': {
            'handlers': ['console'],
            'level': 'INFO',
            'filters': []
        }
    }
}

我的意图是将日志级别设置为 INFO,但我仍然看到一堆 DEBUG 消息,并且字符串 MYFORMATTER 无论如何都没有出现在其中。

最后,带着盲目的乐观,我尝试了这个:

from django.utils.log import DEFAULT_LOGGING
DEFAULT_LOGGING['handlers']['console']['level'] = 'INFO'

我一定遗漏了一些很明显的东西。

顺便说一句,我使用的是 Django 1.5.1。

【问题讨论】:

  • 您可能对sentry感兴趣。

标签: django logging


【解决方案1】:

在这里回答我自己的问题,我最终在 settings.py 文件中使用了以下内容:

import logging

logging.basicConfig(
    level = logging.INFO,
    format = " %(levelname)s %(name)s: %(message)s",
)

【讨论】:

    【解决方案2】:

    您可以这样做来设置 django 日志记录级别:

    import logging
    logging.disable(logging.INFO)
    

    logging.disable(lvl)

    为所有优先于 logger 自己的级别。当需要 暂时降低整个应用程序的日志输出, 这个功能很有用。它的作用是禁用所有日志记录 严重程度为 lvl 及以下的调用,因此如果您使用值调用它 INFO,则所有 INFO 和 DEBUG 事件都将被丢弃,而 严重警告及以上的将按照 记录仪的有效电平。撤消调用的效果 logging.disable(lvl),调用 logging.disable(logging.NOTSET)。

    http://docs.python.org/2/library/logging.html#logging.disable

    【讨论】:

    • 嗯。但是,如果底层记录器被配置为在 INFO 处打印并且我想在控制台上查看 DEBUG 消息,这将不起作用。
    【解决方案3】:

    我遇到了类似的问题 - 我的一个处理程序缺少一个“类”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多