我根据此gist 向 Google Chat 发送消息。自从升级到 Django 2.1 后,即使配置保持不变(很像你的情况),它也停止了工作。虽然我不完全确定发生了什么,但我发现如果我将服务器的 DEBUG 更改为 True 并将我的“chat_admins”日志处理程序上的过滤器更改为“require_debug_true”,它会再次工作。当然,这并不理想,因为它在生产环境中,其中 DEBUG 为 'False',我需要它来工作。
我最终在 settings.py 中重写了我的 LOGGING 变量,试图获得最小的配置并遵循Django Logging 的文档。它现在正在生产中使用 DEBUG 为“True”。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[{server_time}] {message}',
'style': '{',
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'django.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'django.server',
},
'chat_admins': {
'level': 'DEBUG',
'filters': ['require_debug_false'],
'class': 'myapp.chat_logger.ChatExceptionHandler',
},
},
'loggers': {
'django': {
'handlers': ['console', 'chat_admins'],
'level': 'INFO',
'propagate': True,
},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False,
},
},
}
原始设置和我的重写之间只有两个主要区别:1) 'mail_admins' 处理程序消失了,2) django 记录器中的'propagate' 现在设置为'True'。我也尝试手动将这些设置应用于先前的配置,但仍然无法正常工作。