1 回答
TA貢獻1772條經驗 獲得超8個贊
編寫自定義Hook,將檢查條目是否severity設置了字段,如果沒有插入默認值。將該鉤子附加到默認全局或您自己的記錄器。
logrus.ErrorLevel您可以通過在返回值中僅包含該級別來限制掛鉤僅在條目上觸發Hook.Levels():
type ErrorHook struct {
}
func (h *ErrorHook) Levels() []logrus.Level {
// fire only on ErrorLevel (.Error(), .Errorf(), etc.)
return []logrus.Level{logrus.ErrorLevel}
}
func (h *ErrorHook) Fire(e *logrus.Entry) error {
// e.Data is a map with all fields attached to entry
if _, ok := e.Data["severity"]; !ok {
e.Data["severity"] = "normal"
}
return nil
}
func main() {
logrus.AddHook(&ErrorHook{})
logrus.WithFields(logrus.Fields{"animal": "walrus"}).Info("A walrus appears")
// time="2009-11-10T23:00:00Z" level=info msg="A walrus appears" animal=walrus
logrus.WithFields(logrus.Fields{"animal": "walrus"}).Error("A error walrus appears")
// time="2009-11-10T23:00:00Z" level=error msg="A error walrus appears" animal=walrus severity=normal
logrus.WithFields(logrus.Fields{"animal": "walrus", "severity": "high"}).Error("An overriden severity error walrus appears")
// time="2009-11-10T23:00:00Z" level=error msg="An overriden severity error walrus appears" animal=walrus severity=high
}
- 1 回答
- 0 關注
- 151 瀏覽
添加回答
舉報
