为了账号安全,请及时绑定邮箱和手机立即绑定

如何配置 cloud.google.com/go/logging 看起来像写入标准输出的日志?

如何配置 cloud.google.com/go/logging 看起来像写入标准输出的日志?

Go
森栏 2022-06-06 16:59:25
我正在用 Go 编写一个谷歌云函数。我可以简单地通过写入标准输出来编写日志消息。生成的日志包括有关函数、其运行时、跟踪信息等的信息。非常好,但是,我想在我的日志中添加一些结构化数据,这意味着标准输出不够灵活。所以我正在尝试使用“cloud.google.com/go/logging”。我是这样设置的:// Set up like thislogClient, err = logging.NewClient(ctx, "my-project-id")if err != nil {    return}logger := logClient.Logger("my-function-name")// And log like thislogger.Log(logging.Entry{    Payload:  "Hello World!",    Severity: logging.Info,})但是,我在 Cloud Console 中看到的日志缺少所有自动附加到标准输出日志的好信息。为了取回其中的一部分,我可以在设置记录器时添加此选项:logging.CommonResource(&monitoredres.MonitoredResource{    Type: fmt.Sprintf("projects/%s/logs/cloudfunctions.googleapis.com%scloud-functions", os.Getenv("GCP_PROJECT"), "%2F"),    Labels: map[string]string{        "function_name": os.Getenv("FUNCTION_NAME"),        "project_id":    os.Getenv("GCP_PROJECT"),        "region":        os.Getenv("FUNCTION_REGION"),    },})这允许我在 Cloud Console 中单击云功能列表中的“查看日志”按钮时查看日志。但是,它缺少函数执行 ID 和跟踪 ID。我在这里遗漏了一些明显的东西,还是为谷歌云服务设置体面的日志记录非常复杂?任何帮助表示赞赏。
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

诀窍是简单地将 json 字符串写入标准输出。

fmt.Println(`{"field_name": "Hello World!"}`)

可以在此处找到日志的架构。

例如像这样设置严重性:

fmt.Println(`{"field_name": "Hello World!", "severity": "DEBUG"}`)


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信