我正在尝试实现一个函数来过滤发送到 Slack 通道的错误消息。我仍然希望它登录 .log 文件,只是不想将它发送给 Slack。这是我迄今为止尝试过的:
def contains_url(record):
if 'abc' in record.request.path:
return False
return True
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '[{levelname}] {asctime} {module} {process:d} {thread:d} {message}',
'style': '{',
},
'simple': {'format': '[{levelname}] -- : {message}', 'style': '{',},
},
'filters': {
'contains_url': {
'()': 'django.utils.log.CallbackFilter',
'callback': contains_url,
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'log.log',
'formatter': 'simple',
},
'slack_admins': {
'level': 'ERROR',
'filters': ['contains_url'],
'class': 'django_slack.log.SlackExceptionHandler',
},
},
'loggers': {
'django': {
'handlers': ['console', 'file'],
'level': 'DEBUG',
},
'django.security.DisallowedHost': {
'handlers': ['console','file','slack_admins'],
'level': 'DEBUG',
},
}
所以基本上,我希望像往常一样将包含“abc”日志的 url 中的所有错误消息发送到 log.log
,但不希望它出现在 slack 通道中。我添加了 slack_admins -> filters
但它没有帮助。有什么建议么 ?谢谢