【问题标题】:Google App Engine Errors not showing up in StackDriver Error Reporting using Flask使用 Flask 的 StackDriver 错误报告中未显示 Google App Engine 错误
【发布时间】:2018-04-25 22:18:53
【问题描述】:

我正在使用 Google App Engine 标准环境来托管 python-flask-application,但在 StackDriver 错误报告中显示错误时遇到了问题。默认情况下,Google App Engine 应该将错误记录到 StackDriver 错误报告中,但它不会。

我之前在 StackDriver 错误报告中出现过错误,但我无法重现。这些错误似乎直接出现在服务器错误部分,而不是应用程序错误。但对我来说,两者都记录在 StackDriver 错误报告中似乎是合乎逻辑的。

我进行了一些调试,以便使用路由 /error/500 使其正常工作。结果如下:

  • 错误显示在 Google App Engine 概览中:
  • 两者都在日志中可见:
  • 但 StackDriver 错误报告中没有显示任何内容:

有人知道为什么会这样吗?

更新:我发现使用flask.logger 似乎是个问题。使用logging 可以正常工作并最终出现在 StackDriver 错误报告中(一些格式问题除外)。不过,两者都最终出现在记录器中。我正在使用logging.StreamHandler 使用addHandler 注册到flask.logger。我最好的猜测是logging.StreamHandler 的格式有问题。进一步调查。

【问题讨论】:

  • @Arun 这似乎不是同一个问题。我的错误被正确记录,但它们并没有最终出现在 StackDriver 错误报告中。
  • 我也遇到过同样的问题。也许在应用引擎实例扩展期间?
  • @Arun 我检查了日志,它们登录到具有相同 ID 的实例上,相隔 1 分 18 秒。因此,如果缩放是问题,那么至少应该将第二个记录到 StackDriver 错误报告中。唉。。

标签: python google-app-engine flask stackdriver google-cloud-error-reporting


【解决方案1】:

在使用 Google App Engine SDK 进行一些挖掘和调试后,我发现 GAE 有一个日志处理程序:

google.appengine.api.app_logging.AppLogsHandler

Google App Engine 将 1 注册到 logging,但不会注册到 flask.logger。因此,如果您使用 app.logger.error(my_error) 为例,它不会注册到 StackDriver 错误报告。

现在我手动注册一个来解决这个问题:

from google.appengine.api.app_logging import AppLogsHandler
app.logger.addHandler(AppLogsHandler())

app.logger.error(my_error)

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2018-02-27
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多