Logrus Hook

作者: kker | 来源:发表于2016-11-15 18:59 被阅读769次

    问题:在用golang的Logrus库的时候,用Json格式记录日志,有时候希望加一些固定的Fields,比如在日志收集中心中,Log记录自己的程序名,又不想每次Log日志的时候,每处都手动添加到logrus.Fields中。

    <br />

    解决方法:这时可以使用logrus的Hook来完成这个功能。每此写入日志时拦截,修改logrus.Entry。


    logrus的Hook接口
    type Hook interface { 
        Levels() []Level 
        Fire(*Entry) error
    }
    
    自己实现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{})
    // 添加自己实现的Hook
    log.AddHook(&DefaultFieldsHook{})
    

    相关文章

      网友评论

        本文标题:Logrus Hook

        本文链接:https://www.haomeiwen.com/subject/izrlpttx.html