我不知道该怎么说,但我觉得谷歌在我不知情的情况下改变了一些东西。我曾经在日志记录仪表板内的 Google Cloud Console 中从我的 python Cloud Functions 获取日志。而现在,它刚刚停止工作。
于是就去查了半天,就做了一个log hello world python Cloud Function:
import logging
def cf_endpoint(req):
logging.debug('log debug')
logging.info('log info')
logging.warning('log warning')
logging.error('log error')
logging.critical('log critical')
return 'ok'
所以这是我的 main.py,我将其部署为带有 http 触发器的 Cloud Function。
由于我有一个包含所有“调试”级别日志的日志摄取排除过滤器,所以我在日志记录仪表板中看不到任何内容。但是当我删除它时,我发现了这一点:
因此,似乎正在将 python 内置日志记录解析到 stackdriver 中的东西停止解析日志严重性参数!如果我看起来很愚蠢,我很抱歉,但这是我唯一能想到的事情:/
你们对此有任何解释或解决方案吗?我做错了吗?
预先感谢您的帮助。
2022⁄01 更新:
输出现在看起来像这样:
[INFO]: Connecting to DB ...
严重性的下拉菜单如下所示:
使用“默认”作为显示 Python 日志记录所需的过滤器,这意味着只显示任何可用的日志,并且所有 Python 日志都在“默认”下,严重性仍然下降。
原文由 beQr 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 Python 本机 日志记录 模块时,不再支持 Stackdriver 日志记录严重性过滤器。
但是,您仍然可以使用 Stackdriver Logging Client Libraries 创建具有一定严重性的日志。查看 此文档 以参考 Python 库,并查看 此 文档以获取一些用例示例。
请注意,为了让日志位于正确的资源下,您必须手动配置它们,请参阅 此列表 以了解支持的资源类型。同样,每种资源类型都有一些需要出现在日志结构中的 必需标签。
例如,以下代码会将日志写入 Stackdriver Logging 中的 Cloud Function 资源,严重程度为
ERROR
:请注意
YOUR-CLOUD-FUNCTION-NAME
、YOUR-FUNCTION-LOCATION
和YOUR-PROJECT-ID
中的字符串需要特定于您的项目/资源。