Go 每日一库之 logrus

本文介绍了Go日志库logrus的使用,包括快速入门、定制化配置如输出文件名、添加字段、重定向输出、日志格式等,并探讨了如何设置钩子和使用第三方格式。
摘要由CSDN通过智能技术生成

简介

前一篇文章介绍了 Go 标准库中的日志库 log。最后我们也提到,log库只提供了三组接口,功能过于简单了。今天,我们来介绍一个日志库中的“明星库”——logrus。本文编写之时(2020.02.07),logrus 在 GitHub 上 star 数已达到 13.8k。logrus完全兼容标准的log库,还支持文本、JSON 两种日志输出格式。很多知名的开源项目都使用了这个库,如大名鼎鼎的 docker。

快速使用

第三方库需要先安装:

$ go get github.com/sirupsen/logrus

后使用:

package main

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

func main() {
  logrus.SetLevel(logrus.TraceLevel)

  logrus.Trace("trace msg")
  logrus.Debug("debug msg")
  logrus.Info("info msg")
  logrus.Warn("warn msg")
  logrus.Error("error msg")
  logrus.Fatal("fatal msg")
  logrus.Panic("panic msg")
}

logrus的使用非常简单,与标准库log类似。logrus支持更多的日志级别:

  • Panic:记录日志,然后panic
  • Fatal:致命错误,出现错误时程序无法正常运转。输出日志后,程序退出;
  • Error:错误日志,需要查看原因;
  • Warn:警告信息,提醒程序员注意;
  • Info:关键操作,核心流程的日志;
  • Debug:一般程序中输出的调试信息;
  • Trace:很细粒度的信息,一般用不到;

日志级别从上向下依次增加,Trace最大,Panic最小。logrus有一个日志级别,高于这个级别的日志不会输出。默认的级别为InfoLevel。所以为了能看到TraceDebug日志,我们在main函数第一行设置日志级别为TraceLevel

运行程序,输出:

$ go run main.go
time="2020-02-07T21:22:42 08:00" level=trace msg="trace msg"
time="2020-02-07T21:22:42 08:00" level=debug msg="debug msg"
time="2020-02-07T21:22:42 08:00" level=info msg="info msg"
time="2020-02-07T21:22:42 08:00" level=info msg="warn msg"
time="2020-02-07T21:22:42 08:00" level=error msg="error msg"
time="2020-02-07T21:22:42 08:00" level=fatal msg="fatal msg"
exit status 1

由于logrus.Fatal会导致程序退出,下面的logrus.Panic不会执行到。

另外,我们观察到输出中有三个关键信息,timelevelmsg

  • time:输出日志的时间;
  • level:日志级别;
  • msg:日志信息。

定制

输出文件名

调用logrus.SetReportCaller(true)设置在输出日志中添加文件名和方法信息:

package main

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

func main() {
  logrus.SetReportCaller(true)

  logrus.Info("info msg")
}

输出多了两个字段file为调用logrus相关方法的文件名,method为方法名:

$ go run main.go
time="2020-0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值