52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package logger
|
|
|
|
import (
|
|
"log"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// Logger defines the interface for logging
|
|
type Logger interface {
|
|
Info(msg string, fields ...interface{})
|
|
Error(msg string, fields ...interface{})
|
|
Debug(msg string, fields ...interface{})
|
|
Warn(msg string, fields ...interface{})
|
|
}
|
|
|
|
type zapLogger struct {
|
|
logger *zap.SugaredLogger
|
|
}
|
|
|
|
func NewLogger(mode string) Logger {
|
|
var l *zap.Logger
|
|
var err error
|
|
if mode == "release" {
|
|
l, err = zap.NewProduction()
|
|
} else {
|
|
l, err = zap.NewDevelopment()
|
|
}
|
|
|
|
if err != nil {
|
|
log.Fatalf("Failed to initialize logger: %v", err)
|
|
}
|
|
|
|
return &zapLogger{logger: l.Sugar()}
|
|
}
|
|
|
|
func (l *zapLogger) Info(msg string, fields ...interface{}) {
|
|
l.logger.Infow(msg, fields...)
|
|
}
|
|
|
|
func (l *zapLogger) Error(msg string, fields ...interface{}) {
|
|
l.logger.Errorw(msg, fields...)
|
|
}
|
|
|
|
func (l *zapLogger) Debug(msg string, fields ...interface{}) {
|
|
l.logger.Debugw(msg, fields...)
|
|
}
|
|
|
|
func (l *zapLogger) Warn(msg string, fields ...interface{}) {
|
|
l.logger.Warnw(msg, fields...)
|
|
}
|