为什么这个记录器不创建哨兵事件?
Why does this logger not create Sentry events?
我正在使用 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
的模块修复此问题?
一般来说,我能想到的三种方式是日志消息不能变成事件:
event_level
参数设置过高(默认报错,做init(integrations=[LoggingIntegration(event_level=logging.DEBUG)])
- 您的记录器级别太高(做
logger.setLevel(logging.DEBUG)
)
- 您的记录器有一个过滤器可以过滤掉这些消息(检查
logger.filters
是否为空)
在你的情况下,我只能想到后一种情况适用。
它是 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
我正在使用 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
的模块修复此问题?
一般来说,我能想到的三种方式是日志消息不能变成事件:
event_level
参数设置过高(默认报错,做init(integrations=[LoggingIntegration(event_level=logging.DEBUG)])
- 您的记录器级别太高(做
logger.setLevel(logging.DEBUG)
) - 您的记录器有一个过滤器可以过滤掉这些消息(检查
logger.filters
是否为空)
在你的情况下,我只能想到后一种情况适用。
它是 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