golang logrus 记录错误堆栈_每日一库之 logrus 日志使用教程

本文介绍了Golang中最受欢迎的日志库Logrus,详细讲解了其特性,包括兼容标准库日志、可扩展的Hook机制、日志格式定制及Fields用法。Logrus允许开发者记录结构化日志,并可通过Hook将日志发送到邮件、Slack、Dingding等。此外,文章还展示了如何自定义Hook以实现日志分隔和线程安全。
摘要由CSDN通过智能技术生成

golang 日志库

golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持. 所以催生了很多第三方的日志库,但是在 golang 的世界里,没有一个日志库像 slf4j 那样在 Java 中具有绝对统治地位.golang 中,流行的日志框架包括 logrus、zap、zerolog、seelog 等.

logrus是目前 Github 上 star 数量最多的日志库,目前(2018.12,下同)star 数量为 8119,fork 数为 1031. logrus功能强大,性能高效,而且具有高度灵活性,提供了自定义插件的功能.很多开源项目,如docker,prometheus,dejavuzhou/ginbro[1]等,都是用了 logrus 来记录其日志.

zap 是 Uber 推出的一个快速、结构化的分级日志库.具有强大的 ad-hoc 分析功能,并且具有灵活的仪表盘.zap 目前在 GitHub 上的 star 数量约为 4.3k. seelog 提供了灵活的异步调度、格式化和过滤功能.目前在 GitHub 上也有约 1.1k.

logrus 特性

  • 完全兼容 golang 标准库日志模块:logrus 拥有六种日志级别:debug、info、warn、error、fatal 和 panic,这是 golang 标准库日志模块的 API 的超集.如果您的项目使用标准库日志模块,完全可以以最低的代价迁移到 logrus 上。
    • logrus.Debug("Useful debugging information.")
    • logrus.Info("Something noteworthy happened!")
    • logrus.Warn("You should probably take a look at this.")
    • logrus.Error("Something failed but I'm not quitting.")
    • logrus.Fatal("Bye.") // log 之后会调用 os.Exit(1)
    • logrus.Panic("I'm bailing.") // log 之后会 panic()
  • 可扩展的 Hook 机制:允许使用者通过 hook 的方式将日志分发到任意地方,如本地文件系统、标准输出、logstash、elasticsearch或者mq等,或者通过 hook 定义日志内容和格式等.
  • 可选的日志输出格式:logrus 内置了两种日志格式,JSONFormatter和TextFormatter,如果这两个格式不满足需求,可以自己动手实现接口 Formatter,来定义自己的日志格式.
  • Field机制:logrus鼓励通过 Field 机制进行精细化的、结构化的日志记录,而不是通过冗长的消息来记录日志.
  • logrus是一个可插拔的、结构化的日志框架.
  • Entry: logrus.WithFields 会自动返回一个 *Entry,Entry 里面的有些变量会被自动加上
    • time:entry被创建时的时间戳
    • msg:在调用.Info()等方法时被添加
    • level

logrus 的使用

1.基本用法

package mainimport (  log "github.com/sirupsen/logrus")func main() {  log.WithFields(log.Fields{    "animal": "walrus",  }).Info("A walrus appears")}

上面代码执行后,标准输出上输出如下:

time="2018-08-11T15:42:22+08:00" level=info msg="A walrus appears" animal=walrus

logrus与 golang 标准库日志模块完全兼容,因此您可以使用log“github.com/sirupsen/logrus”替换所有日志导入. logrus可以通过简单的配置,来定义输出、格式或者日志级别等.

package mainimport (    "os"    log "github.com/sirupsen/logrus")func init() {    // 设置日志格式为json格式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值