...

Source file src/github.com/sirupsen/logrus/hooks.go

Documentation: github.com/sirupsen/logrus

     1  package logrus
     2  
     3  // A hook to be fired when logging on the logging levels returned from
     4  // `Levels()` on your implementation of the interface. Note that this is not
     5  // fired in a goroutine or a channel with workers, you should handle such
     6  // functionality yourself if your call is non-blocking and you don't wish for
     7  // the logging calls for levels returned from `Levels()` to block.
     8  type Hook interface {
     9  	Levels() []Level
    10  	Fire(*Entry) error
    11  }
    12  
    13  // Internal type for storing the hooks on a logger instance.
    14  type LevelHooks map[Level][]Hook
    15  
    16  // Add a hook to an instance of logger. This is called with
    17  // `log.Hooks.Add(new(MyHook))` where `MyHook` implements the `Hook` interface.
    18  func (hooks LevelHooks) Add(hook Hook) {
    19  	for _, level := range hook.Levels() {
    20  		hooks[level] = append(hooks[level], hook)
    21  	}
    22  }
    23  
    24  // Fire all the hooks for the passed level. Used by `entry.log` to fire
    25  // appropriate hooks for a log entry.
    26  func (hooks LevelHooks) Fire(level Level, entry *Entry) error {
    27  	for _, hook := range hooks[level] {
    28  		if err := hook.Fire(entry); err != nil {
    29  			return err
    30  		}
    31  	}
    32  
    33  	return nil
    34  }
    35  

View as plain text