khenaidoo | ac63710 | 2019-01-14 15:44:34 -0500 | [diff] [blame^] | 1 | package zerolog |
| 2 | |
| 3 | // Hook defines an interface to a log hook. |
| 4 | type Hook interface { |
| 5 | // Run runs the hook with the event. |
| 6 | Run(e *Event, level Level, message string) |
| 7 | } |
| 8 | |
| 9 | // HookFunc is an adaptor to allow the use of an ordinary function |
| 10 | // as a Hook. |
| 11 | type HookFunc func(e *Event, level Level, message string) |
| 12 | |
| 13 | // Run implements the Hook interface. |
| 14 | func (h HookFunc) Run(e *Event, level Level, message string) { |
| 15 | h(e, level, message) |
| 16 | } |
| 17 | |
| 18 | // LevelHook applies a different hook for each level. |
| 19 | type LevelHook struct { |
| 20 | NoLevelHook, DebugHook, InfoHook, WarnHook, ErrorHook, FatalHook, PanicHook Hook |
| 21 | } |
| 22 | |
| 23 | // Run implements the Hook interface. |
| 24 | func (h LevelHook) Run(e *Event, level Level, message string) { |
| 25 | switch level { |
| 26 | case DebugLevel: |
| 27 | if h.DebugHook != nil { |
| 28 | h.DebugHook.Run(e, level, message) |
| 29 | } |
| 30 | case InfoLevel: |
| 31 | if h.InfoHook != nil { |
| 32 | h.InfoHook.Run(e, level, message) |
| 33 | } |
| 34 | case WarnLevel: |
| 35 | if h.WarnHook != nil { |
| 36 | h.WarnHook.Run(e, level, message) |
| 37 | } |
| 38 | case ErrorLevel: |
| 39 | if h.ErrorHook != nil { |
| 40 | h.ErrorHook.Run(e, level, message) |
| 41 | } |
| 42 | case FatalLevel: |
| 43 | if h.FatalHook != nil { |
| 44 | h.FatalHook.Run(e, level, message) |
| 45 | } |
| 46 | case PanicLevel: |
| 47 | if h.PanicHook != nil { |
| 48 | h.PanicHook.Run(e, level, message) |
| 49 | } |
| 50 | case NoLevel: |
| 51 | if h.NoLevelHook != nil { |
| 52 | h.NoLevelHook.Run(e, level, message) |
| 53 | } |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | // NewLevelHook returns a new LevelHook. |
| 58 | func NewLevelHook() LevelHook { |
| 59 | return LevelHook{} |
| 60 | } |