我使用Google App Engine标准环境来托管python-flask-application,我遇到了在StackDriver错误报告中出现错误的问题。默认情况下,Google App Engine会将错误记录到StackDriver错误报告中,但它没有。
我在StackDriver错误报告出现之前有错误,但我无法重现。这些错误似乎直接发生在Server-Errors部分,而不是Application-Errors。但对我来说,两者都记录在StackDriver错误报告中似乎是合乎逻辑的。
我做了一些调试,以便使用路由/error
和/500
使其正常工作。结果如下:
有人会知道为什么会这样吗?
更新:我发现使用flask.logger
似乎是个问题。使用logging
工作正常并最终在StackDriver错误报告中(除了一些格式问题)。两者最终都会在记录器中结束。我使用logging.StreamHandler
使用flask.logger
注册addHandler
。我最好的猜测是logging.StreamHandler
的格式有问题。进一步调查。
答案 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)