似乎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的警告(警告可以以任何一种方式,并不在乎)和异常,错误,这对于stderr至关重要
我在这里想念什么? (一些明显的设置?每个人都知道吗?)谢谢您的帮助!
解决方法:
尝试定义2个处理程序,例如consoleout和consoleerr使用正确的流.
对记录器部分中的每个条目使用正确的处理程序.
标签:logging,python,django
来源: https://codeday.me/bug/20191121/2053315.html