golang日志框架--logrus学习笔记

golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数,对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多第三方的日志库,而logrus就是其中的一款第三方日志库,它的功能强大,性能高效,而且具有高度灵活性,提供了自定义插件的功能。

1.logrus的特性

JSONFormatterTextFormatterFormatter

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的学习")
}

控制台打印输出为:

log "github.com/sirupsen/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日志框架的简单了解和使用