// Package logging configures zerolog and provides HTTP request logging middleware. package logging import ( "io" stdlog "log" "os" "github.com/ryanhamamura/c4/config" "github.com/rs/zerolog" "github.com/rs/zerolog/log" "github.com/rs/zerolog/pkgerrors" ) func SetupLogger(env config.Environment, level zerolog.Level) *zerolog.Logger { zerolog.ErrorStackFieldName = "stack_trace" zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack zerolog.SetGlobalLevel(level) zerolog.TimeFieldFormat = zerolog.TimeFormatUnix var output io.Writer switch env { case config.Dev: output = zerolog.ConsoleWriter{ Out: os.Stderr, TimeFormat: "2006/01/02 15:04:05", } case config.Prod: output = os.Stderr } logger := zerolog.New(output).With().Timestamp().Stack().Logger() zerolog.DefaultContextLogger = &logger log.Logger = logger stdlog.SetFlags(0) stdlog.SetOutput(logger) return &logger }