我刚刚安装了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()})
有什么想法吗? 谢谢!
答案 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写入服务器日志。可以检查一下。