I'm trying to add a logger to my server, but for some reason it doesn't work, meaning it doesn't output to stdout
.
The thing is, the logger
works outside the server but not when injected. Any clue what I'm missing?
func InitializeLogger() zerolog.Logger {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.SetGlobalLevel(zerolog.InfoLevel)
output := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.DateTime}
output.FormatLevel = func(i interface{}) string {
return strings.ToUpper(fmt.Sprintf("| %-6s|", i))
}
output.FormatMessage = func(i interface{}) string {
return fmt.Sprintf("%s", i)
}
logger := zerolog.New(output).With().Timestamp().Logger()
logger = logger.With().Caller().Logger()
return logger
}
logger := util.InitializeLogger()
logger.Info().Str("service", "main").Msg("works") // works fine
server, err := api.NewServer(..., logger)
func (server *Server) ErrLogger(service string, err error) error {
server.logger.Error().Str("service", service).Msg("test")
return nil
}
server.ErrLogger("main", fmt.Errorf("a")) // doesn't work .. no output at all