【问题标题】:Why is this logging configuration not printing to stdout?为什么此日志记录配置不打印到标准输出?
【发布时间】:2012-03-11 10:39:28
【问题描述】:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
    'verbose': {
        'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
    },
    'simple': {
        'format': '%(levelname)s %(message)s'
    }
},
'handlers': {
    'console': {
        'level':'DEBUG',
        'class':'logging.StreamHandler',
        'strm': sys.stdout,
        'formatter':'simple'
    },
},
'loggers': {
    'django': {
        'handlers':['console'],
        'propagate': True,
        'level':'INFO',
    }, 
    #'django.request': {
    #    'handlers': ['console'],
    #    'level': 'ERROR',
    #    'propagate': True,
    #},
},
}

尝试了两个记录器,活动记录器和注释掉的记录器(以及许多其他记录器)。 跑步

python manage.py runserver 0.0.0.0:8080

然而,我的控制台没有打印出 500 错误的痕迹,只是:

[21/Feb/2012 04:21:10] "POST /some/path/function/ HTTP/1.1" 500 105627

我做错了什么?

【问题讨论】:

    标签: python django


    【解决方案1】:

    你需要指定filters:

    'loggers': {
        'django': {
            'handlers':['console'],
            'filters': [],             # <-- this line
            'propagate': True,
            'level':'INFO',
        },
    },
    

    我不知道为什么。

    【讨论】:

    • 我自己偶然发现了这个。出于某种原因,AFAIK,过滤器字段是唯一一个由 django 以某种方式自动设置为 ['require_debug_false'] 的字段,如果未指定,至少在使用 mail_admins 处理程序时。我通过反复试验和大量抓挠发现了这一点。我不确定这是预期行为还是错误(Django 1.4.x)
    • 啊,有趣的发现@TomášPlešek
    【解决方案2】:

    Logger 级别比处理程序级别具有更高的优先级, logging.DEBUG 的值为 10,logging.INFO 的值为 20。

    'handlers': {
        'console': {
            'level':'DEBUG',
        },
    }
    
    'loggers': {
            'level':'INFO',
        }
    

    因此,您的日志记录始终设置为记录器优先级的 INFO 级别,并且不会使用 DEBUG 输出。

    这就是我认为的问题。

    【讨论】:

    • 当然,如果我将记录器级别设置为 DEBUG,我可以获得 DEBUG 输出。我不想要调试输出。我想要 INFO 及以上,但我真正想要的是错误。根本没有错误级别的日志记录。
    • logging.ERROR 的值为 40,请在日志记录模块中查看。试试,导入日志logging.ERROR
    【解决方案3】:

    我花了一段时间才挖出来,但正是因为这个:

    https://docs.djangoproject.com/en/dev/releases/1.4/#request-exceptions-are-now-always-logged

    这很令人困惑,应该在日志文档中突出显示,但事实并非如此。

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2016-09-24
      • 2017-04-13
      • 1970-01-01
      相关资源
      最近更新 更多