我正在使用django和sentry-sdk。在我的django设置的记录器部分中,我具有以下处理程序:
'loggers': {
'django.request': {
'level': 'WARNING',
'handlers': ['console', ],
'propagate': False
}
}
sentry-sdk初始化如下:
import logging
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration
from sentry_sdk.integrations.logging import LoggingIntegration
sentry_logging = LoggingIntegration(
level=logging.INFO,
event_level=logging.ERROR
)
sentry_sdk.init(
dsn="...",
integrations=[DjangoIntegration(), sentry_logging],
)
但是,以下示例未将错误事件发送到哨兵
import logging
logger = logging.getLogger('django.request')
logger.error('Why do I not appear in sentry?')
例如,其他人这样做
import logging
logger = logging.getLogger('another_module')
logger.error('And why do I do appear in sentry?')
问题:如何为带有propagate=False
的模块解决此问题?
答案 0 :(得分:1)
总的来说,我可以通过三种方式认为日志消息不会变成事件:
Quarter
参数设置得太高(默认情况下出错,请执行event_level
init(integrations=[LoggingIntegration(event_level=logging.DEBUG)])
)logger.setLevel(logging.DEBUG)
是否为空)在您的情况下,我只能想到后一种情况。
答案 1 :(得分:1)
sentry_sdk的django集成主动设置了记录程序以使其被忽略
ignore_logger("django.server")
ignore_logger("django.request")
https://github.com/getsentry/sentry-python/blob/master/sentry_sdk/integrations/django/init.py#L90