kubelatte-ce
Форк от sbertech/kubelatte-ce
92 строки · 2.1 Кб
1package lib2
3import (4"fmt"5"github.com/go-logr/logr"6"github.com/go-logr/zapr"7"go.uber.org/zap"8"go.uber.org/zap/zapcore"9"os"10)
11
12const (13DebugLevel = reverseLogsLevels(zap.DebugLevel)14InfoLevel = reverseLogsLevels(zap.InfoLevel)15WarnLevel = reverseLogsLevels(-1 * zap.WarnLevel)16ErrorLevel = reverseLogsLevels(-1 * zap.ErrorLevel)17DPanicLevel = reverseLogsLevels(-1 * zap.DPanicLevel)18PanicLevel = reverseLogsLevels(-1 * zap.PanicLevel)19FatalLevel = reverseLogsLevels(-1 * zap.FatalLevel)20)
21
22const (23StdOut outputLogs = iota24FileOut
25MultiOut
26)
27
28var (29ZapLogger *zap.Logger30LoggerSTD logr.Logger31JsonEncoder zapcore.Encoder32AtomLevel = zap.NewAtomicLevel()33)
34
35type reverseLogsLevels int36type outputLogs int37type LogOptions struct {38Out outputLogs
39LvlFluentBit zapcore.Level40LvlConsole zapcore.Level41}
42
43func parseAndSetReverseLevel(level string) error {44
45switch level {46case "debug", "DEBUG":47AtomLevel.SetLevel(zapcore.Level(DebugLevel))48case "info", "INFO", "":49AtomLevel.SetLevel(zapcore.Level(InfoLevel))50case "warn", "WARN":51AtomLevel.SetLevel(zapcore.Level(WarnLevel))52case "error", "ERROR":53AtomLevel.SetLevel(zapcore.Level(ErrorLevel))54case "dpanic", "DPANIC":55AtomLevel.SetLevel(zapcore.Level(DPanicLevel))56case "panic", "PANIC":57AtomLevel.SetLevel(zapcore.Level(PanicLevel))58case "fatal", "FATAL":59AtomLevel.SetLevel(zapcore.Level(FatalLevel))60default:61AtomLevel.SetLevel(zapcore.Level(FatalLevel))62return fmt.Errorf("unrecognized level: %q", level)63}64return nil65}
66
67func LoggersInit(logLevel string) {68var err error69
70encoderCfg := zap.NewDevelopmentEncoderConfig()71encoderCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder72encoderCfg.EncodeTime = zapcore.RFC3339TimeEncoder73JsonEncoder = zapcore.NewConsoleEncoder(encoderCfg)74
75ZapLogger = zap.New(zapcore.NewCore(76JsonEncoder,77zapcore.WriteSyncer(os.Stdout),78AtomLevel))79
80LoggerSTD = zapr.NewLogger(ZapLogger)81
82defer ZapLogger.Sync()83
84if err = parseAndSetReverseLevel(logLevel); err != nil {85ZapLogger.Log(zap.FatalLevel, fmt.Sprintf(err.Error()))86os.Exit(1)87}88}
89
90func IsDebugMode() bool {91return AtomLevel.Level() == zap.DebugLevel92}
93