乐趣区

关于go:go-库之-logrus-日志

更多文章:https://oscome.cn/

引言

作为 github 上 golang star 最多的库,logrus 值得练习。

我的项目地址

我的项目地址:https://github.com/sirupsen/l… [star:21.4k]

应用场景

  • 日志打印、格式化日志

装置

go get github.com/sirupsen/logrus

罕用办法

  • Info 打印 info 级别的日志
  • SetFormatter 设置日志格局
  • SetLevel 设置打印的级别,此级别以上显示
  • SetReportCaller 设置是否将调用办法作为字段蕴含在打印的日志内。

例子

package main

import "github.com/sirupsen/logrus"

func main() {log := logrus.New()
    log.Info("------TextFormatter--------") // 默认格局
    log.SetFormatter(&logrus.TextFormatter{
        TimestampFormat: "2006-01-02 15:04:05", // 定义日期工夫格局
        FullTimestamp:   true,
        DisableColors:   true,
    })
    log.Info("oscome info log")
    log.Debug("oscome debug log")

    log.WithFields(logrus.Fields{"name": "test",}).Infof("to do %v", "log")

    log.Info("------JSONFormatter--------")

    formatter := &logrus.JSONFormatter{
        TimestampFormat: "2006-01-02 15:04:05", // 定义日期工夫格局
        DataKey:         "test",                // key
        FieldMap: logrus.FieldMap{
            logrus.FieldKeyTime:  "timestamp",
            logrus.FieldKeyLevel: "level",
            logrus.FieldKeyMsg:   "message",
            logrus.FieldKeyFunc:  "caller",
        },
    }
    log.SetFormatter(formatter)
    log.SetReportCaller(true)      // 打印 log 产生的地位
    log.SetLevel(logrus.InfoLevel) // debug
    logrus.Info("oscome info log")
    log.Debug("oscome debug log")

    log.WithFields(logrus.Fields{"name": "test",}).Infof("to do %v", "log")
}

实例代码

https://github.com/oscome/god…

tips

  1. 倡议全局对立格局,如果须要收集倡议设置为 json 格局,不便收集到 ES 等日志零碎
  2. 能够配合 file-rotatelogs 或者 shell 去宰割
退出移动版