package logger import ( "os" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) func New() (*zap.Logger, error) { highPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { return lvl >= zapcore.ErrorLevel }) lowPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool { return lvl < zapcore.ErrorLevel && lvl > zapcore.DebugLevel }) config := zap.NewDevelopmentEncoderConfig() config.EncodeTime = nil config.EncodeLevel = zapcore.CapitalColorLevelEncoder consoleEncoder := zapcore.NewConsoleEncoder(config) consoleDebugging := zapcore.Lock(os.Stdout) consoleErrors := zapcore.Lock(os.Stderr) core := zapcore.NewTee( zapcore.NewCore(consoleEncoder, consoleErrors, highPriority), zapcore.NewCore(consoleEncoder, consoleDebugging, lowPriority), ) logger := zap.New(core) return logger, nil }