我已经接管了一个使用python和flask的项目(我也是python/flask的新手!(。我想将哨兵添加到其中以捕获发生的任何错误/异常。为了增加复杂性,项目被拆分为多个相互链接的 docker 容器。我首先尝试让主"前端"容器开始将错误记录到 Sentry。
我已经阅读了文档,但它只会让我更加困惑。
例如(从 frontend.py 文件(:
app = WebServer(logger, environment)
sentry = Sentry(app, logging=True, level=logging.INFO)
这是在应用程序的前端部分。据我了解,这应该允许 Sentry 捕获任何异常并将其发送出去,但没有任何反应(我做了一个简单的除以零来强制异常(。
我确定我可能错过了一些东西,但我只是对文档感到困惑。
例如,在日志记录选项中(我一直在考虑可能使用此选项(,它讨论了手动设置客户端。它在谈论什么客户?
我之前已经将Sentry设置为在PHP Laravel应用程序中工作,完全没有问题,而且非常非常容易做到。这种蟒蛇的方式让我感到困惑。
这就是我最终所做的:
from raven import Client
from raven.conf import setup_logging
from raven.handlers.logging import SentryHandler
sentry_dsn = 'MY DSN FROM SENTRY'
sentry_client = Client(dsn=sentry_dsn, site='MYAPP')
handler = SentryHandler(sentry_client)
handler.setLevel(logging.ERROR)
setup_loggin(handler)
因此,以这种方式设置,我现在发现在我的应用程序中使用记录器的任何地方,哨兵都会捡起它并将其发送出去。
同样为了让我知道它来自哪个部分,我创建了一个具有有意义名称的记录器:例如logger = logging.getLogger('meaningfulname')
然后 Sentry 将在其结果中显示"有意义的名称"。