python - 为什么这个记录器不创建 Sentry 事件?

标签 python django logging sentry

我正在使用 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],                           
)                                                                                 

但是下面的例子并没有向 Sentry 发送错误事件

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 是否为空)

在你的情况下,我只能想到后一种情况适用。

关于python - 为什么这个记录器不创建 Sentry 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56463030/

相关文章:

Django 模板继承(扩展的位置)

java - 如何使用 Log4J 和 Apache Chainsaw 远程查看日志事件?

python - 使用具有不同日志级别的多个处理程序时意外的 python 记录器输出

java - Log4J 动态配置

python - 是否可以让 Python 自动检测动态库中的函数?

python - pip 要求说明符 : role of the comma

Python 2.7 : how to pass options for standalone/module code

python - Django:通过 send_mass_mail() 发送 HTML 电子邮件

python - 如何提高 python 绘图的速度?

python - SciPysolve_ivp 的解决方案包含一阶 ODE 系统的振荡