-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.go
61 lines (54 loc) · 1.2 KB
/
config.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
package logrus_lfshook
import (
"github.com/BurntSushi/toml"
. "github.com/Sirupsen/logrus"
)
// HookConfig config info for hook, can load as toml
type HookConfig struct {
FlushTime int64 // ms
FlushCount int64
Levels map[string]levelConfig
levels map[Level]levelConfig
}
type levelConfig struct {
Path string
TimeIntervalSeg int64 // ms
SizeIntervalSeg int64 // kb
}
// LoadFromToml load config info by "github.com/BurntSushi/toml"
func (h *HookConfig) LoadFromToml(datas []byte) error {
err := toml.Unmarshal(datas, h)
if err != nil {
return err
}
// build levels,
// conv level from string to logrus.Level
h.levels = make(map[Level]levelConfig,
len(h.Levels))
for levelStr, info := range h.Levels {
level, err := ParseLevel(levelStr)
if err != nil {
return err
}
h.levels[level] = info
}
return nil
}
// AddLevel add config info for a log level
func (h *HookConfig) AddLevel(
level Level,
path string,
time4seg int64,
size4seg int64) {
if h.levels == nil {
h.levels = make(map[Level]levelConfig, 8)
h.Levels = make(map[string]levelConfig, 8)
}
info := levelConfig{
path,
time4seg,
size4seg,
}
h.Levels[level.String()] = info
h.levels[level] = info
}