go日志庫中的logrus

一、安裝

go get github.com/sirupsen/logrus

二、使用

1、當做標準庫使用

logrus實現瞭標準庫log的方法,可以用標準庫的方法用於logrus,例如

import (
  log "github.com/sirupsen/logrus"
)
log.Println("標準log")

2、使用帶級別日志

import (
  log "github.com/sirupsen/logrus"
)

func main() {
  log.Info("info")
}

具體有七個類別Trace、Debug、Info、Warning、Error、Fatal和Panic。這裡需要註意Fatal和Panic類型的日志會中斷程序的運行。

3、輸出日志時可以附帶參數

log.WithFields(log.Fields{
  "flag":    true,
  "name": "zhangsan",
  }).Fatal("fatal")

在運行中出現錯誤時,把當時的參數記錄下來更容易分析,而不是把各個參數組織成句子拼接起來。

4、日志輸出的格式

log.SetFormatter(&log.JSONFormatter{})
log.SetFormatter(&log.TextFormatter{
  ForceColors:   true,
  FullTimestamp: true,
  })
log.SetOutput(os.Stdout)
log.SetLevel(log.WarnLevel)

可以輸出JSON,文本格式,對具體的格式還可以設置顏色、時間串等信息,可以設置輸出位置,輸出日志的級別。

5、輸出到多個位置

如果同一份日志內容想存儲到不同位置,可以創建不同的log實例,對每個實例進行不同設置

var log = logrus.New()

6、輸出日志到文件

file, err := os.OpenFile("logs/cus.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err == nil {
    log.Out = file
} else {
    log.Info("Failed to log to file, using default stderr")
}

7、分割日志文件

如果每天的日志都放到一個文件中,會越來越大,按照時間進行分割會比較好。下面的內容放到初始化的時候執行。

這裡面需要引入第三方庫

"github.com/lestrrat-go/file-rotatelogs"

"github.com/rifflock/lfshook"

writer, err := rotatelogs.New(
    "文件名"+".%Y%m%d%H%M", // 分割後的文件名稱
    rotatelogs.WithLinkName("文件名"),      // 生成軟鏈,指向最新日志文件
    rotatelogs.WithMaxAge(time.Hour*24*365),             // 設置最大保存時間
    rotatelogs.WithRotationTime(time.Hour*24), // 設置日志切割時間間隔
)

if err != nil {
    log.Errorf("config local file system logger error", err)
}

lfHook := lfshook.NewHook(lfshook.WriterMap{
    logrus.DebugLevel: writer, // 為不同級別設置不同的輸出目的
    logrus.InfoLevel:  writer,
    logrus.WarnLevel:  writer,
    logrus.ErrorLevel: writer,
    logrus.FatalLevel: writer,
    logrus.PanicLevel: writer,
}, &logrus.TextFormatter{DisableColors: true})
//最後加入hook
log.AddHook(lfHook)

到此這篇關於go日志庫中的logrus的文章就介紹到這瞭,更多相關go日志庫logrus內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: