golang日志框架--logrus學習筆記


golang日志框架--logrus學習筆記

golang標准庫的日志框架非常簡單,僅僅提供了print,panic和fatal三個函數,對於更精細的日志級別、日志文件分割以及日志分發等方面並沒有提供支持。所以催生了很多第三方的日志庫,而logrus就是其中的一款第三方日志庫,它的功能強大,性能高效,而且具有高度靈活性,提供了自定義插件的功能。

1.logrus的特性

  • 完全兼容golang標准庫日志模塊:logrus擁有六種日志級別:debug、info、warn、error、fatal和panic,這是golang標准庫日志模塊的API的超集。如果項目使用標准庫日志模塊,完全可以以最低的代價遷移到logrus上。

  • 可擴展的Hook機制:允許使用者通過hook的方式將日志分發到任意地方,如本地文件系統、標准輸出、logstash、elasticsearch或者mq等,或者通過hook定義日志內容和格式等。

  • 可選的日志輸出格式:logrus內置了兩種日志格式,JSONFormatterTextFormatter,如果這兩個格式不滿足需求,可以自己動手實現接口Formatter,來定義自己的日志格式。

  • Field機制:logrus鼓勵通過Field機制進行精細化的、結構化的日志記錄,而不是通過冗長的消息來記錄日志。

  • logrus是一個可插拔的、結構化的日志框架。

2.logrus的使用

package main

import (
  log "github.com/sirupsen/logrus" //這個日志依賴庫,需要使用
    //govendor fetch github.com/sirupsen/logrus 下載到vendor目錄。
)

func main() {
  log.WithFields(log.Fields{
    "info": "這是golang日志框架--logrus",
  }).Info("描述信息為golang日志框架logrus的學習")
}

控制台打印輸出為:

logrus與golang標准庫日志模塊完全兼容,因此可以使用log "github.com/sirupsen/logrus"替換所有日志導入。 logrus還可以通過簡單的配置,來定義輸出、格式或者日志級別等。

3.設置日志輸出格式,日志級別等信息

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

func initLog() {
	log.SetFormatter(&log.JSONFormatter{})//設置日志的輸出格式為json格式,還可以設置為text格式
	log.SetOutput(os.Stdout)//設置日志的輸出為標准輸出
	log.SetLevel(log.InfoLevel)//設置日志的顯示級別,這一級別以及更高級別的日志信息將會輸出
}

func main() {
	//以package級別方式使用日志
	initLog()
	log.WithFields(log.Fields{
		"info": "這是golang日志框架--logrus",
	}).Info("描述信息為golang日志框架logrus的學習")

	log.WithFields(log.Fields{
			"omg":     true,
			"number":  122,
			"country": "china",
		}).Warn("hello this is warn level") //警告級別

		log.WithFields(log.Fields{
			"hello": "jason",
		}).Fatal("the ice breaks!")//最高級別,致命信息
    
}

4.使用日志實例的方式使用日志

package main

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

var log=logrus.New()

func main() {
//用日志實例的方式使用日志
log.Out=os.Stdout   //日志標准輸出
file,err:=os.OpenFile("golang.log",os.O_CREATE|os.O_WRONLY,1)
	if err==nil {
		log.Out=file
	}else {
		log.Info("failed to log to file")
	}
	log.WithFields(logrus.Fields{
		"filename":"123.txt",
	}).Info("將日志信息輸出到文件中")

}

以上就是logrus日志框架的簡單了解和使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM