如何为Python版Google Cloud Function日志添加自定义标签
基于Python的Google Cloud Function添加自定义日志标签方案
完全可以实现你要的效果,添加的自定义标签会和默认的function_name、execution_id在日志条目中并列展示,有两种常用实现方式:
方案1:输出结构化JSON日志(无需额外依赖)
Google Cloud Logging会自动识别打印内容中的JSON结构,将labels字段下的键值对识别为日志标签,适配所有Python运行时版本:
import json def hello_world(request): # 你要添加的自定义标签值 client_id = "client_67890" # 构造结构化日志内容 log_data = { "message": "客户端请求处理完成", "labels": { "client_id": client_id, "request_region": "cn-north1" }, "severity": "INFO" } # 直接打印序列化后的JSON即可 print(json.dumps(log_data)) return "ok"
如果习惯用logging模块打印日志,可以自定义日志Formatter自动序列化输出JSON,不需要每次手动调用json.dumps。
方案2:使用官方Cloud Logging SDK(适合复杂日志场景)
需要先安装依赖包:pip install google-cloud-logging
代码示例如下,运行环境会自动获取日志写入权限,不需要手动配置身份凭证:
import google.cloud.logging import logging # 初始化日志客户端,全局仅需执行一次 client = google.cloud.logging.Client() client.setup_logging() def hello_world(request): client_id = "client_67890" # 传入extra参数添加自定义标签 logging.info( "客户端请求处理完成", extra={"labels": {"client_id": client_id}} ) return "ok"
注意:如果需要为函数单次执行生命周期内的所有日志都自动添加同一个
client_id标签,可以在函数入口处配置全局logging过滤器,不需要每条日志单独传标签参数。
内容的提问来源于stack exchange,提问作者Raoot
相关产品推荐
相关产品推荐

