登录
首页 >  Golang >  Go问答

使用 Zerolog 如何自动记录对象的结构?

来源:stackoverflow

时间:2024-03-10 23:18:26 309浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《使用 Zerolog 如何自动记录对象的结构?》,涉及到,有需要的可以收藏一下

问题内容

我正在使用 zerolog 登录 go 应用程序。我想记录一个地图(json)并找到一种方法:

log.info().
    str("foo", "bar").
    dict("dict", zerolog.dict().
        str("bar", "baz").
        int("n", 1),
    ).msg("hello world")

// output: {"level":"info","time":1494567715,"foo":"bar","dict":{"bar":"baz","n":1},"message":"hello world"}

在上面的示例中,我需要在 zerolog.dict() 方法中指定每个 key-value 对。我想知道是否有自动记录 struct 的方法。

例如,我有一个如下结构:

type message struct {
    aws_region     string `json:"region"`
    log_level      string `json:"level"`
    stage          string `json:"stage"`
    request_id     string `json:"requestid"`
}

我正在寻找一种将 message 实例传递给的方法

msg := Message{ ... }
zerolog.Dict("message", msg)

正确答案


您可以使用 Interface 方法来实现此目的。

示例

但是请注意,Interface 使用反射进行序列化,因此代码简短会以性能为代价

本篇关于《使用 Zerolog 如何自动记录对象的结构?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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