Django 过滤器记录到松弛通道

时间:2021-07-21 19:30:23

标签: python django

我正在尝试实现一个函数来过滤发送到 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 但它没有帮助。有什么建议么 ?谢谢

0 个答案:

没有答案
相关问题