1package zerolog 2 3// Hook defines an interface to a log hook. 4type 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. 11type HookFunc func(e *Event, level Level, message string) 12 13// Run implements the Hook interface. 14func (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. 19type LevelHook struct { 20 NoLevelHook, DebugHook, InfoHook, WarnHook, ErrorHook, FatalHook, PanicHook Hook 21} 22 23// Run implements the Hook interface. 24func (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. 58func NewLevelHook() LevelHook { 59 return LevelHook{} 60} 61