Python,如何设置jsonPayload的日志格式

2024-09-28 01:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从Google Cloud run向云日志写入JSON格式的数据日志。 但当我在云日志中检查日志时,我的数据日志以字符串类型出现在jsonPayload的消息字段中

jsonPayload: {
  message: "{"test": "testing"}"
  python_logger: "cloudLogger"
}

但是,我所期望的

jsonPayload: {
  test: "testing"
}

这是我试过的代码

client = google.cloud.logging.Client()
handler = CloudLoggingHandler(client, name="test")
cloud_logger = logging.getLogger('cloudLogger')
cloud_logger.setLvel(logging.INFO)
cloud_logger.addHandler(handler)
cloud_logger.info(json.dumps({"test": "testing"})

为了更改jsonPayload的格式,我想我可能需要设置一个格式化程序,我尝试了一些来自web的示例,但没有成功

如何使jsonPayload准确显示JSON格式的数据


Tags: 数据runtestclientjsoncloudlogging格式
2条回答

在云日志中,结构化日志可以引用使用jsonPayload字段向其有效负载添加结构的日志条目

我们有多种方法将您的有效负载转换为JSON格式:

  1. 使用Cloud Logging agent获取日志条目时,可以指定日志代理将有效负载转换为JSON格式

我们应该安装日志代理,要启用结构化日志,您必须在安装或重新安装时更改日志代理的默认配置 信息技术启用结构化日志将替换以前列出的配置文件。代理本身的操作没有变化

  1. 您可以使用云日志API或gcloud命令行工具,控制有效负载的结构。有关示例,请参见Writing structured logs

您可以通过以下方式将结构化日志写入日志:

  • 将带有jsonPayload的完整日志条目结构发送到云 日志API
  • 向日志代理提供序列化的JSON对象

启用结构化日志时,列出的日志将转换为与启用结构化日志之前不同格式的日志条目

请查看Structured logging了解更多详细信息

  1. 您可以使用BindPlane服务接收日志,然后您的有效负载是JSON格式的,并根据源系统进行结构

您还可以选中Formatting Python Logs for Stackdriver

云函数也有类似的问题。我使用了python3.7,使用了多个客户机日志库,stackdriver仍然以文本的形式显示,因为python正在以字符串格式打印它

最终将python升级到v3.8,解决了这个问题

相关问题 更多 >

    热门问题