問題:在用golang的Logrus庫的時候未玻,用Json格式記錄日志厂汗,有時候希望加一些固定的Fields,比如在日志收集中心中冯痢,Log記錄自己的程序名元莫,又不想每次Log日志的時候赖阻,每處都手動添加到logrus.Fields中。
<br />
解決方法:這時可以使用logrus的Hook來完成這個功能踱蠢。每此寫入日志時攔截火欧,修改logrus.Entry。
logrus的Hook接口
type Hook interface {
Levels() []Level
Fire(*Entry) error
}
自己實現(xiàn)Hook接口
type DefaultFieldsHook struct {
}
func (df *DefaultFieldsHook) Fire(entry *log.Entry) error {
entry.Data["appName"] = "MyAppName"
return nil
}
func (df *DefaultFieldsHook) Levels() []log.Level {
return log.AllLevels
}
log.SetFormatter(&log.JSONFormatter{})
// 添加自己實現(xiàn)的Hook
log.AddHook(&DefaultFieldsHook{})