server injected logger no output

64 Views Asked by At

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
0

There are 0 best solutions below