一个 Hook.Fire() 中的错误会阻止后续的钩子执行
作者: tochiai创建于 2016年8月31日更新于 2026年3月9日
标签enhancementstale
LevelHooks.Fire() 中的循环在出现错误时会被中断,这在我们的使用场景中是不合适的。这与文档注释中的行为不同: // 为传入的级别执行所有的钩子。 我们的解决方案是通过按错误发生的可能性升序将钩子 LevelHooks.Add() 到循环中,这样循环不会过早终止。 我们认为允许 LevelHooks 中的所有钩子尝试执行是更好的做法。可以通过使用 go-multierror 来捕获错误,然后在循环执行完所有钩子后返回集合中的错误。如果这似乎是一个可取的更改,我很乐意提交一个 PR。
内容来源: sirupsen/logrus