annotate vendor/github.com/sirupsen/logrus/hooks.go @ 66:787b5ee0289d draft

Use vendored modules Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Sun, 23 Jul 2023 13:18:53 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package logrus
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 // A hook to be fired when logging on the logging levels returned from
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4 // `Levels()` on your implementation of the interface. Note that this is not
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 // fired in a goroutine or a channel with workers, you should handle such
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6 // functionality yourself if your call is non-blocking and you don't wish for
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 // the logging calls for levels returned from `Levels()` to block.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8 type Hook interface {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9 Levels() []Level
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 Fire(*Entry) error
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13 // Internal type for storing the hooks on a logger instance.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 type LevelHooks map[Level][]Hook
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 // Add a hook to an instance of logger. This is called with
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17 // `log.Hooks.Add(new(MyHook))` where `MyHook` implements the `Hook` interface.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18 func (hooks LevelHooks) Add(hook Hook) {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 for _, level := range hook.Levels() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 hooks[level] = append(hooks[level], hook)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 // Fire all the hooks for the passed level. Used by `entry.log` to fire
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25 // appropriate hooks for a log entry.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26 func (hooks LevelHooks) Fire(level Level, entry *Entry) error {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 for _, hook := range hooks[level] {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 if err := hook.Fire(entry); err != nil {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 return err
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 return nil
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 }