通过 Flask 应用程序进行哨兵日志记录

Sentry logging via Flask app

我正在 Flask 应用程序中测试 Sentry 错误记录系统 (getsentry.com)。除了异常,我正在尝试为后台进程记录一些关键 logging.INFO 消息。

为了测试,我使用内置的 Flask 记录器向 Sentry 发送消息以获取关键 URL 请求。

问题是日志记录条目没有及时发送到 Sentry。相反,它们似乎是 'saved up' 并且仅在应用进程完成后才发送,这对生产服务器没有用。

我认为我使用 Docker 容器可能是个问题,但我已经在基本应用程序和调试服务器中测试了 Sentry,同样的情况发生了。

如果需要,我可以提供代码(仅在 phone ATM 上),但我认为这对于熟悉该问题的人来说可能就足够了。

很可能您的应用程序使用的线程模型与 Sentry SDK 的默认线程传输不兼容:

https://github.com/getsentry/raven-python/blob/master/raven/transport/threaded.py#L26

您会注意到,它会在进程终止时强制发送所有未决消息,这很可能就是您遇到的情况。然而,真正的问题是工作线程似乎不是 运行.

您应该尝试使用同步HttpTransport,或者判断以上是否正确:

https://docs.getsentry.com/hosted/clients/python/transports/