kubelatte-ce

Форк
2
Форк от sbertech/kubelatte-ce
92 строки · 2.1 Кб
1
package lib
2

3
import (
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

12
const (
13
	DebugLevel  = reverseLogsLevels(zap.DebugLevel)
14
	InfoLevel   = reverseLogsLevels(zap.InfoLevel)
15
	WarnLevel   = reverseLogsLevels(-1 * zap.WarnLevel)
16
	ErrorLevel  = reverseLogsLevels(-1 * zap.ErrorLevel)
17
	DPanicLevel = reverseLogsLevels(-1 * zap.DPanicLevel)
18
	PanicLevel  = reverseLogsLevels(-1 * zap.PanicLevel)
19
	FatalLevel  = reverseLogsLevels(-1 * zap.FatalLevel)
20
)
21

22
const (
23
	StdOut outputLogs = iota
24
	FileOut
25
	MultiOut
26
)
27

28
var (
29
	ZapLogger   *zap.Logger
30
	LoggerSTD   logr.Logger
31
	JsonEncoder zapcore.Encoder
32
	AtomLevel   = zap.NewAtomicLevel()
33
)
34

35
type reverseLogsLevels int
36
type outputLogs int
37
type LogOptions struct {
38
	Out          outputLogs
39
	LvlFluentBit zapcore.Level
40
	LvlConsole   zapcore.Level
41
}
42

43
func parseAndSetReverseLevel(level string) error {
44

45
	switch level {
46
	case "debug", "DEBUG":
47
		AtomLevel.SetLevel(zapcore.Level(DebugLevel))
48
	case "info", "INFO", "":
49
		AtomLevel.SetLevel(zapcore.Level(InfoLevel))
50
	case "warn", "WARN":
51
		AtomLevel.SetLevel(zapcore.Level(WarnLevel))
52
	case "error", "ERROR":
53
		AtomLevel.SetLevel(zapcore.Level(ErrorLevel))
54
	case "dpanic", "DPANIC":
55
		AtomLevel.SetLevel(zapcore.Level(DPanicLevel))
56
	case "panic", "PANIC":
57
		AtomLevel.SetLevel(zapcore.Level(PanicLevel))
58
	case "fatal", "FATAL":
59
		AtomLevel.SetLevel(zapcore.Level(FatalLevel))
60
	default:
61
		AtomLevel.SetLevel(zapcore.Level(FatalLevel))
62
		return fmt.Errorf("unrecognized level: %q", level)
63
	}
64
	return nil
65
}
66

67
func LoggersInit(logLevel string) {
68
	var err error
69

70
	encoderCfg := zap.NewDevelopmentEncoderConfig()
71
	encoderCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder
72
	encoderCfg.EncodeTime = zapcore.RFC3339TimeEncoder
73
	JsonEncoder = zapcore.NewConsoleEncoder(encoderCfg)
74

75
	ZapLogger = zap.New(zapcore.NewCore(
76
		JsonEncoder,
77
		zapcore.WriteSyncer(os.Stdout),
78
		AtomLevel))
79

80
	LoggerSTD = zapr.NewLogger(ZapLogger)
81

82
	defer ZapLogger.Sync()
83

84
	if err = parseAndSetReverseLevel(logLevel); err != nil {
85
		ZapLogger.Log(zap.FatalLevel, fmt.Sprintf(err.Error()))
86
		os.Exit(1)
87
	}
88
}
89

90
func IsDebugMode() bool {
91
	return AtomLevel.Level() == zap.DebugLevel
92
}
93

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.