package main import ( log "github.com/sirupsen/logrus" "os" ) // logrus提供了New()函数来创建一个logrus的实例。 // 项目中,可以创建任意数量的logrus实例。 var logger = log.New() type DefaultFieldHook struct { } func NewDefaultFieldHook() (*DefaultFieldHook) { return &DefaultFieldHook{} } func (hook *DefaultFieldHook) Fire(entry *log.Entry) error { //在所有级别的日志消息中加入默认字段appName="myAppName" entry.Data["appName"] = "MyAppName" return nil } func (hook *DefaultFieldHook) Levels() []log.Level { return log.AllLevels } func main() { hook := NewDefaultFieldHook() logger.Hooks.Add(hook) // 为当前logrus实例设置消息的输出,同样地, // 可以设置logrus实例的输出到任意io.writer logger.Out = os.Stdout // 为当前logrus实例设置消息输出格式为json格式。 // 同样地,也可以单独为某个logrus实例设置日志级别和hook,这里不详细叙述。 logger.Formatter = &log.JSONFormatter{} logger.WithFields(log.Fields{ "animal": "walrus", "size": 10, }).Info("A group of walrus emerges from the ocean") }