3

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

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

我做了一些调试,以便使用路由/error/500. 结果如下:

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

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

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

4

1 回答 1

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)
于 2017-11-13T21:57:05.690 回答