Почему этот регистратор не создает события Sentry? - PullRequest
3 голосов
/ 05 июня 2019

Я использую 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?

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Это интеграция 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

1 голос
/ 05 июня 2019

Вообще говоря, есть три способа, которыми я могу представить, что сообщение журнала не может быть событием:

  • Для параметра event_level установлено слишком высокое значение (по умолчанию ошибка, выполните init(integrations=[LoggingIntegration(event_level=logging.DEBUG)])
  • Уровень вашего логгера слишком высокий (do logger.setLevel(logging.DEBUG))
  • Ваш регистратор имеет фильтр, который отфильтровывает эти сообщения (проверьте logger.filters на пустоту)

В вашем случае я могу думать только о последнем случае.

...