似乎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}}
我在这里缺少什么? (一些明显的设置?每个人都知道?)感谢您的帮助!
答案 0 :(得分:3)
尝试使用正确的流定义2个处理程序,例如consoleout
和consoleerr
。
为loggers
部分中的每个条目使用正确的处理程序。