mirror of
https://github.com/go-i2p/go-github-sync.git
synced 2025-06-30 20:53:08 -04:00
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
// Package logger provides structured logging functionality.
|
|
package logger
|
|
|
|
import (
|
|
"os"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
// Logger wraps zap.Logger to provide a simpler interface.
|
|
type Logger struct {
|
|
*zap.SugaredLogger
|
|
}
|
|
|
|
// New creates a new Logger instance.
|
|
func New(debug bool) *Logger {
|
|
level := zapcore.InfoLevel
|
|
if debug {
|
|
level = zapcore.DebugLevel
|
|
}
|
|
|
|
encoderConfig := zapcore.EncoderConfig{
|
|
TimeKey: "time",
|
|
LevelKey: "level",
|
|
NameKey: "logger",
|
|
CallerKey: "caller",
|
|
MessageKey: "msg",
|
|
StacktraceKey: "stacktrace",
|
|
LineEnding: zapcore.DefaultLineEnding,
|
|
EncodeLevel: zapcore.CapitalLevelEncoder,
|
|
EncodeTime: zapcore.ISO8601TimeEncoder,
|
|
EncodeDuration: zapcore.SecondsDurationEncoder,
|
|
EncodeCaller: zapcore.ShortCallerEncoder,
|
|
}
|
|
|
|
core := zapcore.NewCore(
|
|
zapcore.NewConsoleEncoder(encoderConfig),
|
|
zapcore.Lock(os.Stdout),
|
|
level,
|
|
)
|
|
|
|
return &Logger{zap.New(core).Sugar()}
|
|
}
|
|
|
|
// With adds structured context to the logger.
|
|
func (l *Logger) With(args ...interface{}) *Logger {
|
|
return &Logger{l.SugaredLogger.With(args...)}
|
|
}
|