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

Zap 记录器值

Zap 记录器值

Go
PIPIONE 2022-10-17 19:16:49
你好我想使用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 我的问题是如何打印它们,但我不知道应该使用什么
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

的定义zap.String是:

func String(key string, val string) Field

所以第二个参数是 a string; a UUID[]byteis not astring所以不能按原样使用。这使您有两个选择:

  • 将a 传递stringzap.String(将您拥有的内容转换为 a string)或;

  • 使用接受您要记录的类型的函数。

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

下面(操场)演示:

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)),
    )


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

添加回答

举报

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