modelRT/logger/facede.go

55 lines
1.1 KiB
Go
Raw Normal View History

// Package logger define log struct of modelRT project
package logger
import (
"context"
"sync"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var (
f *facade
fOnce sync.Once
)
type facade struct {
_logger *zap.Logger
}
// Debug define facade func of debug level log
func Debug(ctx context.Context, msg string, kv ...any) {
logFacade().log(ctx, zapcore.DebugLevel, msg, kv...)
}
// Info define facade func of info level log
func Info(ctx context.Context, msg string, kv ...any) {
logFacade().log(ctx, zapcore.InfoLevel, msg, kv...)
}
// Warn define facade func of warn level log
func Warn(ctx context.Context, msg string, kv ...any) {
logFacade().log(ctx, zapcore.WarnLevel, msg, kv...)
}
// Error define facade func of error level log
func Error(ctx context.Context, msg string, kv ...any) {
logFacade().log(ctx, zapcore.ErrorLevel, msg, kv...)
}
func (f *facade) log(ctx context.Context, lvl zapcore.Level, msg string, kv ...any) {
fields := makeLogFields(ctx, kv...)
ce := f._logger.Check(lvl, msg)
ce.Write(fields...)
}
func logFacade() *facade {
fOnce.Do(func() {
f = &facade{
_logger: GetLoggerInstance(),
}
})
return f
}