脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - go日志库中的logrus

go日志库中的logrus

2022-11-11 11:59zzxiaoma Golang

这篇文章主要介绍了go日志库中的logrus主要包括go日志库logrus的安装和使用,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

一、安装

?
1
go get github.com/sirupsen/logrus

二、使用

1、当做标准库使用

logrus实现了标准库log的方法,可以用标准库的方法用于logrus,例如

?
1
2
3
4
import (
  log "github.com/sirupsen/logrus"
)
log.Println("标准log")

2、使用带级别日志

?
1
2
3
4
5
6
7
import (
  log "github.com/sirupsen/logrus"
)
 
func main() {
  log.Info("info")
}

具体有七个类别Trace、Debug、Info、Warning、Error、Fatal和Panic。这里需要注意Fatal和Panic类型的日志会中断程序的运行。

3、输出日志时可以附带参数

?
1
2
3
4
log.WithFields(log.Fields{
  "flag":    true,
  "name": "zhangsan",
  }).Fatal("fatal")

在运行中出现错误时,把当时的参数记录下来更容易分析,而不是把各个参数组织成句子拼接起来。

4、日志输出的格式

?
1
2
3
4
5
6
7
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、输出日志到文件

?
1
2
3
4
5
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"

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.51cto.com/u_3764469/5604385

延伸 · 阅读

精彩推荐
  • Golang详解Golang使用MongoDB通用操作

    详解Golang使用MongoDB通用操作

    这篇文章主要介绍了详解Golang使用MongoDB通用操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    impressionw9452021-03-24
  • Golang分享6个Go处理字符串的技巧小结

    分享6个Go处理字符串的技巧小结

    这篇文章主要介绍了分享6个Go处理字符串的技巧小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    zx3952020-06-01
  • GolangGo语言中三种不同md5计算方式的性能比较

    Go语言中三种不同md5计算方式的性能比较

    md5计算在我们日常工作的时候经常能遇到,下面这篇文章主要介绍了Go语言中三种不同md5计算方式的性能比较,需要的朋友可以参考借鉴,下面来一起学习学...

    holys''''''''7682020-05-04
  • GolangCMD下执行Go出现中文乱码的解决方法

    CMD下执行Go出现中文乱码的解决方法

    需要在Go写的服务里面调用命令行或者批处理,并根据返回的结果做处理。但是windows下面用cmd返回中文会出现乱码,本文就详细的介绍一下解决方法,感兴...

    ourLang10112022-01-20
  • Golang使用Golang的channel交叉打印两个数组的操作

    使用Golang的channel交叉打印两个数组的操作

    这篇文章主要介绍了使用Golang的channel交叉打印两个数组的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Monokaix7082021-06-09
  • GolangGo语言Zap库Logger的定制化和封装详解

    Go语言Zap库Logger的定制化和封装详解

    这篇文章主要为大家介绍了Go语言中log库到Zap实现好用的Logger示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加...

    kevinyan8422022-06-26
  • GolangGo语言实现的web爬虫实例

    Go语言实现的web爬虫实例

    这篇文章主要介绍了Go语言实现的web爬虫,实例分析了web爬虫的原理与Go语言的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    Go语言编程实例3832020-04-18
  • Golang如何在Go中使用切片容量和长度

    如何在Go中使用切片容量和长度

    这篇文章主要介绍了如何在Go中使用切片容量和长度,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    KevinYan6602020-05-29