登录
首页 >  Golang >  Go问答

使用 Google Cloud Logging 创建并关联跟踪 ID 的日志条目

来源:stackoverflow

时间:2024-02-13 08:45:20 365浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《使用 Google Cloud Logging 创建并关联跟踪 ID 的日志条目》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

使用 Go 版 Google Cloud Logging 客户端库,可以在 Entry 结构上指定 Trace 字段:https://cloud.google.com/logging/docs/reference/libraries#log-entries。默认情况下,在 Cloud Run 上,请求会使用跟踪 ID 进行记录。如何获取此跟踪 ID 并在我创建的日志中指定它,以便我可以通过导致日志的请求关联日志?


正确答案


传入 cloud run 的请求将具有标头 x-cloud-trace-context。这个头实际上是traceid/anotherid。当您使用 cloud.google.com/go/logging 包创建日志 entry 时,您需要以 projects/{$project_id}/traces/{$trace_id} 格式指定 trace 字段以及您的项目 id 和跟踪标头中的 id。

在我的代码中,我从请求标头获取跟踪 id,并将其设置在请求上下文 c 上,如下所示:

ctx := context.withvalue(c.context(), logging.traceid{}, c.get("x-cloud-trace-context"))

其中 logging 是我自己的自定义日志记录包。然后在日志记录代码中,我使用此方法将上下文中的跟踪附加到云日志记录条目:

func populateLogsEntryWithTrace(ctx context.Context, entry logging.Entry) logging.Entry {
    traceID, ok := ctx.Value(TraceId{}).(string)
    if ok {
        trace := strings.Split(traceID, "/")[0]
        entry.Trace = fmt.Sprintf("projects/%s/traces/%s", projectID, trace)
    }
    return entry
}

终于介绍完啦!小伙伴们,这篇关于《使用 Google Cloud Logging 创建并关联跟踪 ID 的日志条目》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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