似乎 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
发出警告(警告可以是任何一种方式,并不关心)和异常、错误、对 stderr
我在这里错过了什么? (一些明显的设置?每个人都知道吗?)感谢您的帮助!
最佳答案
尝试定义 2 个处理程序,例如 consoleout
和 consoleerr
,每个都使用正确的流。
为 loggers
部分中的每个条目使用正确的处理程序。
关于python - Django 记录器 - 正确输出到 stdout 和 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24117481/