Skip to content

Instantly share code, notes, and snippets.

@MAAARKIN
Created September 10, 2024 21:48
Show Gist options
  • Save MAAARKIN/f8c7b3133624b4bbffda00c22aa0d267 to your computer and use it in GitHub Desktop.
Save MAAARKIN/f8c7b3133624b4bbffda00c22aa0d267 to your computer and use it in GitHub Desktop.
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