Django记录器 - 正确输出到stdout和stderr

时间:2014-06-09 09:39:09

标签: python django logging

似乎Django记录器默认使用stderr来获取所有日志记录级别。

例如,当日志记录设置为:

'version': 1,
        'disable_existing_loggers': True,
        'formatters': {
            'default': {
                'format': "%(asctime)s:%(name)s:%(levelname)s:%(message)s"
            },
        },
        'handlers': {
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'default',

            }
        },
        'loggers': {
            '': {
                'handlers': ['console'],
                'level': 'DEBUG',
                'propagate': True,
            },
            'django': {
                'handlers': ['console'],
                'level': 'WARNING',
                'propagate': False,
            },
            'appname': {
                'handlers': ['console'],
                'level': 'WARNING',
                'propagate': False,
            },

当我将处理程序更改为:

 'handlers': {
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
                'formatter': 'default',
                'stream': sys.stdout  #Notice the change
            }
        },

然后所有输出都在stdout中。

但是我需要正确的行为:记录信息,调试,警告stdout(警告可以是任何一种方式,不关心)和异常,错误,对{至关重要} {1}}

我在这里缺少什么? (一些明显的设置?每个人都知道?)感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

尝试使用正确的流定义2个处理程序,例如consoleoutconsoleerr

loggers部分中的每个条目使用正确的处理程序。