Google Cloud Functions Python 日志记录问题

新手上路,请多包涵

我不知道该怎么说,但我觉得谷歌在我不知情的情况下改变了一些东西。我曾经在日志记录仪表板内的 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 中的东西停止解析日志严重性参数!如果我看起来很愚蠢,我很抱歉,但这是我唯一能想到的事情:/

你们对此有任何解释或解决方案吗?我做错了吗?

预先感谢您的帮助。

202201 更新:

输出现在看起来像这样:

 [INFO]: Connecting to DB ...

严重性的下拉菜单如下所示:

在此处输入图像描述

使用“默认”作为显示 Python 日志记录所需的过滤器,这意味着只显示任何可用的日志,并且所有 Python 日志都在“默认”下,严重性仍然下降。

原文由 beQr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 514
1 个回答

使用 Python 本机 日志记录 模块时,不再支持 Stackdriver 日志记录严重性过滤器。

但是,您仍然可以使用 Stackdriver Logging Client Libraries 创建具有一定严重性的日志。查看 此文档 以参考 Python 库,并查看 文档以获取一些用例示例。

请注意,为了让日志位于正确的资源下,您必须手动配置它们,请参阅 此列表 以了解支持的资源类型。同样,每种资源类型都有一些需要出现在日志结构中的 必需标签

例如,以下代码会将日志写入 Stackdriver Logging 中的 Cloud Function 资源,严重程度为 ERROR

 from google.cloud import logging
from google.cloud.logging.resource import Resource

log_client = logging.Client()

# This is the resource type of the log
log_name = 'cloudfunctions.googleapis.com%2Fcloud-functions'

# Inside the resource, nest the required labels specific to the resource type
res = Resource(type="cloud_function",
               labels={
                   "function_name": "YOUR-CLOUD-FUNCTION-NAME",
                   "region": "YOUR-FUNCTION-LOCATION"
               },
              )
logger = log_client.logger(log_name.format("YOUR-PROJECT-ID"))
logger.log_struct(
 {"message": "message string to log"}, resource=res, severity='ERROR')

return 'Wrote logs to {}.'.format(logger.name) # Return cloud function response

请注意 YOUR-CLOUD-FUNCTION-NAMEYOUR-FUNCTION-LOCATIONYOUR-PROJECT-ID 中的字符串需要特定于您的项目/资源。

原文由 Joan Grau Noël 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进