package logger import ( "io" "os" "time" "github.com/rs/zerolog" ) var log zerolog.Logger func Init(level string, jsonFormat bool) { var output io.Writer = os.Stdout if !jsonFormat { output = zerolog.ConsoleWriter{ Out: os.Stdout, TimeFormat: time.RFC3339, } } lvl, err := zerolog.ParseLevel(level) if err != nil { lvl = zerolog.InfoLevel } log = zerolog.New(output). Level(lvl). With(). Timestamp(). Caller(). Logger() } func Get() *zerolog.Logger { return &log } // Info/fatal/warn/error 等直接透传 func Info() *zerolog.Event { return log.Info() } func Warn() *zerolog.Event { return log.Warn() } func Error() *zerolog.Event { return log.Error() } func Debug() *zerolog.Event { return log.Debug() } func Fatal() *zerolog.Event { return log.Fatal() } func Ctx(ctx interface{ Value(key interface{}) interface{} }) zerolog.Logger { return log.With().Interface("ctx", ctx).Logger() }