...
1 package zerolog
2
3
4 type Hook interface {
5
6 Run(e *Event, level Level, message string)
7 }
8
9
10
11 type HookFunc func(e *Event, level Level, message string)
12
13
14 func (h HookFunc) Run(e *Event, level Level, message string) {
15 h(e, level, message)
16 }
17
18
19 type LevelHook struct {
20 NoLevelHook, TraceHook, DebugHook, InfoHook, WarnHook, ErrorHook, FatalHook, PanicHook Hook
21 }
22
23
24 func (h LevelHook) Run(e *Event, level Level, message string) {
25 switch level {
26 case TraceLevel:
27 if h.TraceHook != nil {
28 h.TraceHook.Run(e, level, message)
29 }
30 case DebugLevel:
31 if h.DebugHook != nil {
32 h.DebugHook.Run(e, level, message)
33 }
34 case InfoLevel:
35 if h.InfoHook != nil {
36 h.InfoHook.Run(e, level, message)
37 }
38 case WarnLevel:
39 if h.WarnHook != nil {
40 h.WarnHook.Run(e, level, message)
41 }
42 case ErrorLevel:
43 if h.ErrorHook != nil {
44 h.ErrorHook.Run(e, level, message)
45 }
46 case FatalLevel:
47 if h.FatalHook != nil {
48 h.FatalHook.Run(e, level, message)
49 }
50 case PanicLevel:
51 if h.PanicHook != nil {
52 h.PanicHook.Run(e, level, message)
53 }
54 case NoLevel:
55 if h.NoLevelHook != nil {
56 h.NoLevelHook.Run(e, level, message)
57 }
58 }
59 }
60
61
62 func NewLevelHook() LevelHook {
63 return LevelHook{}
64 }
65
View as plain text