Created
September 10, 2024 21:48
-
-
Save MAAARKIN/f8c7b3133624b4bbffda00c22aa0d267 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package logger | |
import ( | |
"os" | |
"go.uber.org/zap" | |
"go.uber.org/zap/zapcore" | |
) | |
type zapLogger struct { | |
sugaredLogger *zap.SugaredLogger | |
} | |
// NewZapLogger create new logger using zap logger | |
func NewZapLogger() Logger { | |
consoleEncoder := zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()) | |
core := zapcore.NewCore(consoleEncoder, | |
zapcore.Lock(zapcore.AddSync(os.Stderr)), | |
zapcore.InfoLevel) | |
zapCore := zap.New(core) | |
sugaredLogger := zapCore.WithOptions(zap.AddCallerSkip(1)).Sugar() | |
return &zapLogger{ | |
sugaredLogger: sugaredLogger, | |
} | |
} | |
// Debug uses fmt.Sprint to construct and log a message. | |
func (l *zapLogger) Debug(args ...interface{}) { | |
l.sugaredLogger.Debug(args...) | |
} | |
// Info uses fmt.Sprint to construct and log a message. | |
func (l *zapLogger) Info(args ...interface{}) { | |
l.sugaredLogger.Info(args...) | |
} | |
// Warn uses fmt.Sprint to construct and log a message. | |
func (l *zapLogger) Warn(args ...interface{}) { | |
l.sugaredLogger.Warn(args...) | |
} | |
// Error uses fmt.Sprint to construct and log a message. | |
func (l *zapLogger) Error(args ...interface{}) { | |
l.sugaredLogger.Error(args...) | |
} | |
// Panic uses fmt.Sprint to construct and log a message, then panics. | |
func (l *zapLogger) Panic(args ...interface{}) { | |
l.sugaredLogger.Panic(args...) | |
} | |
// Fatal uses fmt.Sprint to construct and log a message, then calls os.Exit. | |
func (l *zapLogger) Fatal(args ...interface{}) { | |
l.sugaredLogger.Fatal(args...) | |
} | |
// WithFields adds fields to the logging context | |
func (l *zapLogger) WithFields(fields Fields) Logger { | |
var f = make([]interface{}, 0) | |
for k, v := range fields { | |
f = append(f, k) | |
f = append(f, v) | |
} | |
newLogger := l.sugaredLogger.With(f...) | |
return &zapLogger{newLogger} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment