55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
|
|
// 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
|
||
|
|
}
|