登录
首页 >  Golang >  Go问答

电击记录器数值

来源:stackoverflow

时间:2024-02-29 10:54:25 445浏览 收藏

golang学习网今天将给大家带来《电击记录器数值》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

您好,我想使用 zap 全局记录器

现在我是这样使用的

zap.l().error("error receive",
            zap.error(err),
            zap.string("uuid", msg.id)
            zap.string("msg_f", msg_f),
        )

但唯一的问题是我由于 uuid 和 msg 的类型而收到错误

type Message struct {
    Id   uuid.UUID
}

msg_f 类型是 []byte 我的问题是如何打印它们,但我不知道应该使用什么


正确答案


zap.String的定义是:

func string(key string, val string) field

所以第二个参数是 stringuuid/[]byte 不是 string,因此不能按原样使用。这给您留下了两个选择:

  • string 传递给 zap.string (将您拥有的内容转换为 string)或;
  • 使用接受您要记录的类型的函数。

zap 提供了许多返回 field 的函数,其中一些函数接受 []byte (例如 BinaryByteString)。 zap 还提供了 Stringer,您可以将其与实现 fmt.Stringer 接口的任何类型一起使用(其中 uuidzqben dczqb 确实如此)。

以下 (playground) 演示:

zap.L().Error("error receive",
        zap.Error(err),
        zap.String("uuid", msg.Id.String()),
        zap.Stringer("uuid2", msg.Id),
        zap.ByteString("msg_f", msg_f),
        zap.Binary("msg_f2", msg_f),
        zap.String("msg_f3", string(msg_f)),
    )

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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