Home > Back-end >  Zap global logger
Zap global logger

Time:12-08

Hello I want to use zap global logger

Right now I am using sugar_logger like this

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

And response is {"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"}

but I want to use like this zap.L().Info("replaced zap's global loggers")

when I use like this

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

I get an error "too many arguments" how can I use global logger, what am I doing wrong

Thank you

CodePudding user response:

https://pkg.go.dev/go.uber.org/zap#Logger takes a format string and a list of zap.Fields.

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

"too many arguments" because zap.Info takes a string and a variadic list of Fields, but you included too many strings and no Fields. The strings can't be Fields, so they ended up being extra string arguments and that doesn't fit the function signature.

  •  Tags:  
  • go
  • Related