Files
games/logging/log.go
Ryan Hamamura c6885a069b
All checks were successful
CI / Deploy / test (pull_request) Successful in 14s
CI / Deploy / lint (pull_request) Successful in 25s
CI / Deploy / deploy (pull_request) Has been skipped
refactor: rename Go module from c4 to games
Rename module path github.com/ryanhamamura/c4 to
github.com/ryanhamamura/games across go.mod, all source files,
and golangci config.
2026-03-02 20:41:20 -10:00

42 lines
925 B
Go

// Package logging configures zerolog and provides HTTP request logging middleware.
package logging
import (
"io"
stdlog "log"
"os"
"github.com/ryanhamamura/games/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
}