Files
go-ohif-proxy/internal/logger/logger.go
2025-04-07 11:14:18 +07:00

45 lines
1.0 KiB
Go

package logger
import (
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// New creates a new configured logger
func New(logLevel string) *zap.Logger {
// Parse log level
var level zapcore.Level
err := level.UnmarshalText([]byte(logLevel))
if err != nil {
// Default to info level if parsing fails
level = zapcore.InfoLevel
}
// Create encoder config
encoderConfig := zapcore.EncoderConfig{
TimeKey: "time",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.MillisDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
}
// Create core
core := zapcore.NewCore(
zapcore.NewJSONEncoder(encoderConfig),
zapcore.AddSync(os.Stdout),
level,
)
// Create logger with caller information
return zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
}