繁体   English   中英

Python-清理Sentry日志处理程序(django)中的键

[英]Python - Sanitize keys in Sentry logging handler (django)

我在我的Django项目中添加了Sentry日志处理程序。 我想通过添加清理密钥和两个处理器来自定义哨兵处理程序: raven.processors.SanitizePasswordsProcessorraven.processors.SanitizeKeysProcessor

有没有一种方法可以在日志记录配置中执行此操作,而无需编写新的处理程序类, raven.contrib.django.raven_compat.handlers.SentryHandler用所需的参数包装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
    },
}

谢谢

LOGGING配置是添加这些过滤器的错误位置,并且不会清除Sentry事件。

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',
  )
}

Django 1.4至2.0支持Raven(请参阅Django docs )。 Sentry建议为Django 2.1及更高版本使用新的sentry-sdk ,并具有Django集成说明 在“ 切换到Sentry-Python”一文中 ,有一条评论提到Sentry SDK不再提供这些过滤器 ,并建议在需要时编写自定义过滤器 send_default_pii参数默认情况下为False ,用于控制记录和发送过去由这些过滤器控制的许多敏感数据,例如IP地址,用户详细信息和cookie。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM