-
Notifications
You must be signed in to change notification settings - Fork 0
/
global.go
106 lines (92 loc) · 2.46 KB
/
global.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
package loggers
import (
"gopkg.in/natefinch/lumberjack.v2"
"io"
"os"
"time"
"github.com/rs/zerolog"
"github.com/rs/zerolog/pkgerrors"
)
var (
DefaultConsoleWriter = zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339}
EnableConsolColor = false
EnableConsolWriter = true
EnableFileWriter = true
globalConfig *Config
NullLogger *zerolog.Logger
CoreDebugLogger *zerolog.Logger
)
func init() {
zerolog.TimeFieldFormat = time.RFC3339
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
logger := zerolog.New(&NullWriter{})
NullLogger = &logger
CoreDebugLogger = NullLogger
globalConfig = NewConfig()
}
func SetGlobalConfig(c Config) *Config {
globalConfig = &c
EnableConsolColor = c.EnableConsolColor
EnableConsolWriter = c.EnableConsolWriter
EnableFileWriter = c.EnableFileWriter
level, err := zerolog.ParseLevel(c.LogLevel)
if err != nil {
level = zerolog.InfoLevel
}
zerolog.SetGlobalLevel(level)
return globalConfig
}
func GetLogger(fn string) (*zerolog.Logger, error) {
writers := []io.Writer{&NullWriter{}}
if !EnableConsolColor {
DefaultConsoleWriter.NoColor = true
}
if EnableConsolWriter {
writers = append(writers, DefaultConsoleWriter)
}
if EnableFileWriter && len(fn) > 0 {
writers = append(writers, &lumberjack.Logger{
Filename: fn,
MaxSize: globalConfig.MaxSizeMB,
MaxAge: globalConfig.MaxAgeDays,
MaxBackups: globalConfig.MaxBackups,
LocalTime: globalConfig.UseLocalTime,
Compress: globalConfig.Compress,
})
}
multi := zerolog.MultiLevelWriter(writers...)
logger := zerolog.New(multi).With().Timestamp().Logger()
return &logger, nil
}
func NewLogger(c Config) *zerolog.Logger {
writers := []io.Writer{&NullWriter{}}
if !c.EnableConsolColor {
DefaultConsoleWriter.NoColor = true
}
if c.EnableConsolWriter {
writers = append(writers, DefaultConsoleWriter)
}
if c.EnableFileWriter {
writers = append(writers, &lumberjack.Logger{
Filename: c.FileName,
MaxSize: c.MaxSizeMB,
MaxAge: c.MaxAgeDays,
MaxBackups: c.MaxBackups,
LocalTime: c.UseLocalTime,
Compress: c.Compress,
})
}
multi := zerolog.MultiLevelWriter(writers...)
level, err := zerolog.ParseLevel(c.LogLevel)
if err != nil {
level = zerolog.InfoLevel
}
logger := zerolog.New(multi).Level(level).With().Timestamp().Logger()
return &logger
}
func NewGlobalLogger() *zerolog.Logger {
return NewLogger(*globalConfig)
}
func ResetCoreDebugLogger() {
CoreDebugLogger = NullLogger
}