Zap 记录器值

Zap logger values

您好,我想使用 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 提供了一些 return 和 Field 的功能,其中一些接受 []byte(例如 Binary and ByteString. zap also provides Stringer which you can use with any type that implements the fmt.Stringer 接口(UUID 接受)。

下面(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)),
    )