kubelatte-ce
Форк от sbertech/kubelatte-ce
89 строк · 3.0 Кб
1package logger
2
3import (
4"context"
5"encoding/json"
6"fmt"
7"gitverse.ru/synapse/kubelatte/pkg/observability/logger/lib"
8"go.uber.org/zap"
9"go.uber.org/zap/zapcore"
10)
11
12type Logger struct{}
13
14type loggerKey string
15
16var LoggerKey = loggerKey("loggerFromContext")
17
18func FromContext(ctx context.Context) Logger {
19log, ok := ctx.Value(LoggerKey).(Logger)
20if ok {
21return log
22}
23
24return Logger{}
25}
26
27func (l Logger) DoLog(logsOutputOptions lib.LogOptions, keysAndValues ...interface{}) {
28data, _ := json.Marshal(keysAndValues)
29if logsOutputOptions.Out == lib.StdOut || logsOutputOptions.Out == lib.MultiOut {
30lib.ZapLogger.Log(logsOutputOptions.LvlConsole, string(data))
31}
32}
33
34func (l Logger) Fatal(keysAndValues ...interface{}) {
35l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.FatalLevel}, keysAndValues...)
36}
37
38func (l Logger) Fatalf(message string, keysAndValues ...interface{}) {
39l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.FatalLevel}, fmt.Sprintf(message, keysAndValues...))
40}
41
42func (l Logger) Error(keysAndValues ...interface{}) {
43l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.ErrorLevel}, keysAndValues...)
44}
45
46func (l Logger) Errorf(message string, keysAndValues ...interface{}) {
47l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.ErrorLevel}, fmt.Sprintf(message, keysAndValues...))
48}
49
50func (l Logger) Warn(keysAndValues ...interface{}) {
51l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.WarnLevel}, keysAndValues...)
52}
53
54func (l Logger) Warnf(message string, keysAndValues ...interface{}) {
55l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.WarnLevel}, fmt.Sprintf(message, keysAndValues...))
56}
57
58func (l Logger) Info(keysAndValues ...interface{}) {
59l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.InfoLevel}, keysAndValues...)
60}
61
62func (l Logger) Infof(message string, keysAndValues ...interface{}) {
63l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.InfoLevel}, fmt.Sprintf(message, keysAndValues...))
64}
65
66func (l Logger) Debug(keysAndValues ...interface{}) {
67l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.DebugLevel}, keysAndValues...)
68}
69
70func (l Logger) Debugf(message string, keysAndValues ...interface{}) {
71l.DoLog(lib.LogOptions{Out: lib.StdOut, LvlConsole: zap.DebugLevel}, fmt.Sprintf(message, keysAndValues...))
72}
73
74func (l Logger) PersistError(keysAndValues ...interface{}) {
75l.DoLog(lib.LogOptions{Out: lib.MultiOut, LvlFluentBit: zap.InfoLevel, LvlConsole: zap.ErrorLevel},
76keysAndValues...)
77}
78
79func (l Logger) PersistInfo(keysAndValues ...interface{}) {
80l.DoLog(lib.LogOptions{Out: lib.MultiOut, LvlFluentBit: zap.InfoLevel, LvlConsole: zap.InfoLevel}, keysAndValues...)
81}
82
83func (l Logger) PersistDebug(keysAndValues ...interface{}) {
84l.DoLog(lib.LogOptions{Out: lib.MultiOut, LvlFluentBit: zap.InfoLevel, LvlConsole: zap.DebugLevel}, keysAndValues...)
85}
86
87func (l Logger) PersistLog(level zapcore.Level, keysAndValues ...interface{}) {
88l.DoLog(lib.LogOptions{Out: lib.MultiOut, LvlFluentBit: zap.InfoLevel, LvlConsole: level}, keysAndValues...)
89}
90