我很难理解为什么以及如何在谷歌应用引擎标准中,有时我得到了我想要的所有日志级别,有时这个范围是"跳过"特别是在响应是500错误之后。
重现我创建了这两条路线:
@app.route('/testlogger')
def testlogger():
print(logging.getLogger().getEffectiveLevel())
logger.critical(logging.CRITICAL)
logger.error(logging.ERROR)
logger.warning(logging.WARNING)
logger.info(logging.INFO)
logger.debug(logging.DEBUG)
return 'ok', 200
@app.route('/testlogger500')
def testlogger500():
print(logging.getLogger().getEffectiveLevel())
logger.critical(logging.CRITICAL)
logger.error(logging.ERROR)
logger.warning(logging.WARNING)
logger.info(logging.INFO)
logger.debug(logging.DEBUG)
return toto
第二个故意失败。
然后,我会两次触发两条路线
在下方,您将看到stackdriver控制台的屏幕截图。
在/ testlogger的前三次点击中,整个日志范围按预期报告。
然后这变得很奇怪!
/ testlogger500上的前3次点击会在第一次点击时报告整个日志范围,但不会在第二次点击后报告。
然后在每次后续命中时,只有ERROR和CRITICAL范围被发送到stackdriver控制台,WARNING,INFO和DEBUG都被搞砸到宇宙中:)
对于每个路由命中logging.getLogger()。getEffectiveLevel()在10处打印,但就好像生成500错误一样,stackdriver拒绝在ERROR下面显示日志。
这是打算的吗?一旦你得到一个后端错误500,没有发出ERROR以下的日志,或者我在这里做了一些真正可疑的事情?