Go语言 Zap全局记录器

bqujaahr  于 2023-02-10  发布在  Go
关注(0)|答案(2)|浏览(498)

你好我想使用zap全局记录器
现在我使用sugar_logger的方式如下

log_sugar.Infow("Start API",
            "protocol", "http",
            "host", config.Host,
        )

响应为{"level":"info","ts":1638893668.7487385,"caller":"root/main.go:97","msg":"Start API.","host":"0.0.0.0:8080","protocol":"http","host":"0.0.0.0:8080"}
但是我想用zap.L().Info("replaced zap's global loggers")
当我像这样

zap.L().Info("Start API",
            "protocol", "http",
            "host", config.Host,
        )

我得到一个错误“太多的参数”我如何使用全局日志记录器,我做错了什么
谢谢

iszxjhcz

iszxjhcz1#

https://pkg.go.dev/go.uber.org/zap#Logger 采用stringzap.Field列表。

zap.L().Info("Start API",
            zap.String("protocol","http"),
            zap.String("host",config.Host),
)

“太多参数”,因为zap.Info接受一个字符串和一个Field的变量列表,但是你包含了太多的字符串,而没有Fieldstring不可能是Field,所以它们最终成为了额外的字符串参数,这不符合函数签名。

jv2fixgn

jv2fixgn2#

请改用zap.S(),它返回指向全局SugaredLogger的指针。

相关问题