django-sentry не записывает предупреждения, ошибки и т. д. - PullRequest
6 голосов
/ 22 апреля 2011

Я только что установил django-sentry, и он отлично ловит исключения. Однако вызовы logger.warning и logger.error по какой-то причине не сохраняются в Sentry.

Реализация часового режима:

import logging
from sentry.client.handlers import SentryHandler

logger = logging.getLogger()
# ensure we havent already registered the handler
if SentryHandler not in map(lambda x: x.__class__, logger.handlers):
    logger.addHandler(SentryHandler())
# Add StreamHandler to sentry's default so you can catch missed exceptions
logger = logging.getLogger('sentry.errors')
logger.propagate = False
logger.addHandler(logging.StreamHandler())

вызов логгера:

logger.warning("Category is not an integer", exc_info=sys.exc_info(), extra={'url': request.build_absolute_uri()})

Есть идеи? Спасибо!

Ответы [ 3 ]

4 голосов
/ 05 сентября 2011

Вы подключаете обработчик сторожевого потока к logging.getLogger('sentry.errors'). Это означает, что в журналах sentry.errors или ниже будет использоваться обработчик потока sentry.

Но журналы на 'my_app.something' не заканчиваются там! Таким образом, вы пропускаете почти все сообщения журнала.

Решение: присоедините обработчик потока к корневому логгеру: logging.getLogger('').

3 голосов
/ 22 апреля 2011

Попробуйте добавить:

logger.setLevel (logging.DEBUG)

после logging.getlogger, он работает для меня в dev env.

0 голосов
/ 14 июня 2011

Вы можете добавить FileHandler в регистратор sentry.errors и проверить, нет ли в нем ошибок при работе. Но на самом деле стандартный вывод должен быть записан в журналы сервера. Можете проверить это.

...