...

Source file src/github.com/rs/zerolog/hook.go

Documentation: github.com/rs/zerolog

     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, TraceHook, 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 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  // NewLevelHook returns a new LevelHook.
    62  func NewLevelHook() LevelHook {
    63  	return LevelHook{}
    64  }
    65  

View as plain text