1

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
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
Eyal Solomon
  • 470
  • 1
  • 6
  • 15

0 Answers0