我正在向我的Django项目添加一个Sentry日志处理程序。
我想通过添加清理键和两个处理器来定制哨兵处理程序:raven.processors.SanitizePasswordsProcessor
,raven.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
},
}
谢谢
答案 0 :(得分:0)
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 integration instructions。在Switching to Sentry-Python post中,有一条注释提到了Sentry SDK no longer provides these filters,并建议在需要时编写custom filter。默认情况下,send_default_pii parameter,False
控制记录和发送过去由这些过滤器控制的许多敏感数据,例如IP地址,用户详细信息和cookie。