| package zerolog |
| |
| // Hook defines an interface to a log hook. |
| type Hook interface { |
| // Run runs the hook with the event. |
| Run(e *Event, level Level, message string) |
| } |
| |
| // HookFunc is an adaptor to allow the use of an ordinary function |
| // as a Hook. |
| type HookFunc func(e *Event, level Level, message string) |
| |
| // Run implements the Hook interface. |
| func (h HookFunc) Run(e *Event, level Level, message string) { |
| h(e, level, message) |
| } |
| |
| // LevelHook applies a different hook for each level. |
| type LevelHook struct { |
| NoLevelHook, DebugHook, InfoHook, WarnHook, ErrorHook, FatalHook, PanicHook Hook |
| } |
| |
| // Run implements the Hook interface. |
| func (h LevelHook) Run(e *Event, level Level, message string) { |
| switch level { |
| case DebugLevel: |
| if h.DebugHook != nil { |
| h.DebugHook.Run(e, level, message) |
| } |
| case InfoLevel: |
| if h.InfoHook != nil { |
| h.InfoHook.Run(e, level, message) |
| } |
| case WarnLevel: |
| if h.WarnHook != nil { |
| h.WarnHook.Run(e, level, message) |
| } |
| case ErrorLevel: |
| if h.ErrorHook != nil { |
| h.ErrorHook.Run(e, level, message) |
| } |
| case FatalLevel: |
| if h.FatalHook != nil { |
| h.FatalHook.Run(e, level, message) |
| } |
| case PanicLevel: |
| if h.PanicHook != nil { |
| h.PanicHook.Run(e, level, message) |
| } |
| case NoLevel: |
| if h.NoLevelHook != nil { |
| h.NoLevelHook.Run(e, level, message) |
| } |
| } |
| } |
| |
| // NewLevelHook returns a new LevelHook. |
| func NewLevelHook() LevelHook { |
| return LevelHook{} |
| } |