46 lines
1008 B
Go
46 lines
1008 B
Go
package logger
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/go-logr/logr"
|
|
"github.com/go-logr/zapr"
|
|
"github.com/mattn/go-colorable"
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
func SetupLogger(levelTxt string) *zap.Logger {
|
|
level, err := zapcore.ParseLevel(levelTxt)
|
|
if err != nil {
|
|
level = zapcore.ErrorLevel
|
|
}
|
|
aa := zap.NewDevelopmentEncoderConfig()
|
|
aa.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
|
aa.TimeKey = ""
|
|
bb := zap.New(zapcore.NewCore(
|
|
zapcore.NewConsoleEncoder(aa),
|
|
zapcore.AddSync(colorable.NewColorableStdout()),
|
|
level,
|
|
))
|
|
return bb
|
|
}
|
|
|
|
func NewLogger(ctx context.Context, levelTxt string) context.Context {
|
|
log := zapr.NewLogger(SetupLogger(levelTxt))
|
|
ctx = logr.NewContext(ctx, log)
|
|
return ctx
|
|
}
|
|
|
|
func FromContext(ctx context.Context) logr.Logger {
|
|
log, err := logr.FromContext(ctx)
|
|
if err == nil {
|
|
return log
|
|
}
|
|
return zapr.NewLogger(zap.NewExample())
|
|
}
|
|
|
|
func ToContext(ctx context.Context, logger logr.Logger) context.Context {
|
|
return logr.NewContext(ctx, logger)
|
|
}
|