登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-03-01 13:36:23 464浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何配置 cloud.google.com/go/logging 使其看起来像写入标准输出的日志?》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我正在用 go 编写 google cloud function。我可以简单地通过写入标准输出来写入日志消息。生成的日志包括有关该函数、其运行时、跟踪信息等的信息。超级好,但是,我想在日志中添加一些结构化数据,这意味着 stdout 不够灵活。所以我尝试使用“cloud.google.com/go/logging”。我是这样设置的:

// set up like this
logclient, err = logging.newclient(ctx, "my-project-id")
if err != nil {
    return
}
logger := logclient.logger("my-function-name")

// and log like this
logger.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。

我是否在这里遗漏了一些明显的东西,或者为 google cloud 服务设置像样的日志记录是否过于复杂?任何帮助表示赞赏。


解决方案


诀窍是简单地将 json 字符串写入 stdout。

fmt.println(`{"field_name": "hello world!"}`)

日志的架构可以是 found here

例如像这样设置严重性:

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

到这里,我们也就讲完了《如何配置 cloud.google.com/go/logging 使其看起来像写入标准输出的日志?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>