6

我刚刚安装了 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()})

有任何想法吗?谢谢!

4

3 回答 3

4

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

但是日志'my_app.something'不会在那里结束!所以你几乎错过了所有的日志消息。

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

于 2011-09-05T11:30:26.503 回答
3

尝试添加:

logger.setLevel(logging.DEBUG)

在logging.getlogger之后,它在开发环境中对我有用。

于 2011-04-22T06:51:09.657 回答
0

您可以将 FileHandler 添加到“sentry.errors”记录器并检查它是否包含生产中的一些错误。但实际上应该将标准输出写入服务器日志。可以检查这个。

于 2011-06-14T07:04:05.367 回答