使用Flask {Stack}的错误报告中未显示Google App Engine错误

时间:2017-11-13 09:24:52

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

我使用Google App Engine标准环境来托管python-flask-application,我遇到了在StackDriver错误报告中出现错误的问题。默认情况下,Google App Engine会将错误记录到StackDriver错误报告中,但它没有。

我在StackDriver错误报告出现之前有错误,但我无法重现。这些错误似乎直接发生在Server-Errors部分,而不是Application-Errors。但对我来说,两者都记录在StackDriver错误报告中似乎是合乎逻辑的。

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

  • 错误显示在Google App Engine概述中: All Google App Engine Errors
  • 两者都在日志中可见: Errors visible in logs
  • 但StackDriver错误报告中没有显示任何内容: No errors in StackDriver Error Reporting

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

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

1 个答案:

答案 0 :(得分:2)

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

google.appengine.api.app_logging.AppLogsHandler

Google App Engine会向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)