Google App Engine 错误未显示在使用 Flask 的 StackDriver 错误报告中
Google App Engine Errors not showing up in StackDriver Error Reporting using Flask
我正在使用 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
的格式有问题。进一步调查。
在使用 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)
我正在使用 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
的格式有问题。进一步调查。
在使用 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)