哨兵日志处理程序(Django)中的Python清理键

2024-04-25 08:45:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django项目中添加了一个Sentry日志处理程序。 我想通过添加sanitize键和两个处理器来定制sentry处理程序:raven.processors.SanitizePasswordsProcessorraven.processors.SanitizeKeysProcessor。在

有没有一种方法可以在日志配置中不编写新的处理程序类,用我想要的参数包装raven.contrib.django.raven_compat.handlers.SentryHandler类?在

这是我的日志配置:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'x': {
        #'format': '[%(asctime)s #%(process)d] %(levelname)s: %(message)s'
        'format': '%(asctime)s - %(name)s  - %(levelname)s - %(message)s - {%(pathname)s:%(lineno)d}'
    }
},
'handlers': {
    'console': {
        'level': 'DEBUG',
        'class': 'logging.StreamHandler',
        'formatter': 'x'
    },
    'sentry': {
        'level': 'ERROR',
        'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler'
    }
},
'loggers': {
    'django': {
        'level': 'INFO',
        'handlers': ['console', 'sentry'],
        'propagate': True
    },
}

谢谢你


Tags: djangoformat处理程序messagehandlerscontriblevelloggers
1条回答
网友
1楼 · 发布于 2024-04-25 08:45:17

LOGGING配置添加这些过滤器的位置不正确,不会清理哨兵事件。在

Client Arguments doc中所述,正确的位置是RAVEN_CONFIG,也在Django设置文件中:

RAVEN_CONFIG = {
  'dsn': 'https://<key>:<secret>@sentry.io/<project>',
  'sanitize_keys': [
    'keyname1',
    'keyname2',
  ],
  'processors': (
    'raven.processors.SanitizeKeysProcessor',
    'raven.processors.SanitizePasswordsProcessor',
  )
}

django1.4到2.0支持Raven(请参见Django docs)。Sentry建议django2.1和更高版本使用新的sentry-sdk,并且有Django integration instructions。在Switching to Sentry-Python post中,有一条注释提到Sentry SDK no longer provides these filters,并建议在需要时编写custom filter。默认情况下,send_default_pii parameterFalse控制记录和发送大量敏感数据,例如IP地址、用户详细信息和cookies,这些数据在过去由这些过滤器控制。在

相关问题 更多 >