// pkg/logger/interface.go package logger import "go.uber.org/zap" // Interface определяет контракт для логгера type Interface interface { Debug(msg string, fields ...zap.Field) Info(msg string, fields ...zap.Field) Warn(msg string, fields ...zap.Field) Error(msg string, fields ...zap.Field) Fatal(msg string, fields ...zap.Field) Debugf(template string, args ...interface{}) Infof(template string, args ...interface{}) Warnf(template string, args ...interface{}) Errorf(template string, args ...interface{}) Fatalf(template string, args ...interface{}) With(fields ...zap.Field) Interface } // wrapper обертка для zap.Logger type wrapper struct { logger *zap.Logger } // NewWrapper создает новую обертку func NewWrapper(logger *zap.Logger) Interface { return &wrapper{logger: logger} } func (w *wrapper) Debug(msg string, fields ...zap.Field) { w.logger.Debug(msg, fields...) } func (w *wrapper) Info(msg string, fields ...zap.Field) { w.logger.Info(msg, fields...) } func (w *wrapper) Warn(msg string, fields ...zap.Field) { w.logger.Warn(msg, fields...) } func (w *wrapper) Error(msg string, fields ...zap.Field) { w.logger.Error(msg, fields...) } func (w *wrapper) Fatal(msg string, fields ...zap.Field) { w.logger.Fatal(msg, fields...) } func (w *wrapper) Debugf(template string, args ...interface{}) { w.logger.Sugar().Debugf(template, args...) } func (w *wrapper) Infof(template string, args ...interface{}) { w.logger.Sugar().Infof(template, args...) } func (w *wrapper) Warnf(template string, args ...interface{}) { w.logger.Sugar().Warnf(template, args...) } func (w *wrapper) Errorf(template string, args ...interface{}) { w.logger.Sugar().Errorf(template, args...) } func (w *wrapper) Fatalf(template string, args ...interface{}) { w.logger.Sugar().Fatalf(template, args...) } func (w *wrapper) With(fields ...zap.Field) Interface { return &wrapper{logger: w.logger.With(fields...)} }