django-sentry不记录警告,错误等

时间:2011-04-22 03:20:36

标签: django logging sentry

我刚刚安装了django-sentry,它可以很好地捕获异常。但是,由于某种原因,没有将对logger.warning和logger.error的调用保存到Sentry。

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 个答案:

答案 0 :(得分:4)

您正在将哨兵流处理程序附加到logging.getLogger('sentry.errors')。这意味着记录到将使用该哨兵流处理程序的sentry.errors或以下。

但是'my_app.something'的日志并没有结束!所以你几乎忘记了所有日志消息。

解决方案:将流处理程序附加到根记录器:logging.getLogger('')

答案 1 :(得分:3)

尝试添加:

  

logger.setLevel(logging.DEBUG)

在logging.getlogger之后,它适用于dev env。

答案 2 :(得分:0)

您可以将FileHandler添加到'sentry.errors'记录器中,并检查它是否包含生产中的某些错误。但是应该将stdout写入服务器日志。可以检查一下。