-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathlogger.go
135 lines (108 loc) · 2.54 KB
/
logger.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package log
import (
"context"
"strings"
"sync"
"github.com/upfluence/log"
"github.com/upfluence/log/record"
elsink "github.com/upfluence/log/sink/error_logger"
"github.com/upfluence/log/sink/leveled"
"github.com/upfluence/log/sink/multi"
"github.com/upfluence/log/sink/writer"
"github.com/upfluence/pkg/cfg"
"github.com/upfluence/pkg/error_logger"
)
const localPkg = "github.com/upfluence/pkg/log"
var (
loggerMu sync.Mutex
loggerOpts = []log.LoggerOption{
log.WithSink(
multi.NewSink(
leveled.NewSink(
FetchLevel(),
writer.NewStdoutSink(writer.NewDefaultFormatter(localPkg)),
),
leveled.NewSink(
record.Error,
elsink.WrapReporterWithBlacklist(
error_logger.DefaultReporter,
localPkg,
),
),
),
),
}
Logger = log.NewLogger(loggerOpts...)
)
func RegisterContextExtractor(ce log.ContextExtractor) {
loggerMu.Lock()
defer loggerMu.Unlock()
loggerOpts = append(loggerOpts, log.WithContextExtractor(ce))
Logger = log.NewLogger(loggerOpts...)
}
func FetchLevel() record.Level {
switch strings.ToUpper(cfg.FetchString("LOGGER_LEVEL", "")) {
case "DEBUG":
return record.Debug
case "INFO":
return record.Info
case "NOTICE":
return record.Notice
case "WARNING":
return record.Warning
case "ERROR":
return record.Error
case "FATAL":
return record.Fatal
}
return record.Notice
}
func Fatal(args ...interface{}) {
Logger.Fatal(args...)
}
func Fatalf(format string, args ...interface{}) {
Logger.Fatalf(format, args...)
}
func Error(args ...interface{}) {
Logger.Error(args...)
}
func Errorf(format string, args ...interface{}) {
Logger.Errorf(format, args...)
}
func Warning(args ...interface{}) {
Logger.Warning(args...)
}
func Warningf(format string, args ...interface{}) {
Logger.Warningf(format, args...)
}
func Notice(args ...interface{}) {
Logger.Notice(args...)
}
func Noticef(format string, args ...interface{}) {
Logger.Noticef(format, args...)
}
func Info(args ...interface{}) {
Logger.Info(args...)
}
func Infof(format string, args ...interface{}) {
Logger.Infof(format, args...)
}
func Debug(args ...interface{}) {
Logger.Debug(args...)
}
func Debugf(format string, args ...interface{}) {
Logger.Debugf(format, args...)
}
func WithField(f record.Field) log.Logger {
return Logger.WithField(f)
}
func WithFields(fs ...record.Field) log.Logger {
return Logger.WithFields(fs...)
}
func WithContext(ctx context.Context) log.Logger {
return Logger.WithContext(ctx)
}
func WithError(err error) log.Logger {
return Logger.WithError(err)
}
var Field = log.Field