Golang的最佳伐木库
#go #logging

介绍

我最近在GO社区进行了一项民意调查,涉及他们在个人或专业项目中使用的伐木库。结果很有趣。在这篇文章中,我记下了最喜欢的伐木库,这是我对它们的看法。

民意调查结果

这是我在r/golang,Twitter上的The Go Programming Language社区和my LinkedIn following上进行的民意调查结果。

Poll results on r/golang

Poll results on Twitter

Poll results on LinkedIn

结果分析

候选人的选择

为了选择民意调查的候选人,我没有进行任何详尽的研究。我一直在寻找在project at work中使用的库,最终在sirupsen/logrus中使用了该图书馆,该库已经被该项目中的一个依赖项使用了。

阅读了logrus的回教徒后,我注意到它处于维护模式,并且没有积极开发新功能。我仍然决定使用此库,因为Logrus是一个成熟的项目,并且具有日志库应具有的所有功能。

Logrus Readme建议使用其他库,例如ZerologZapApex

我与这四个候选人一起在R/Golang上开始了一项民意调查,但也知道glog是Google的C ++项目的港口。我在LinkedIn进行的民意调查中使用了该选项。

我还没有亲自使用其中任何一个。

logrus

让我们首先谈论Logrus,这是我在寻找它时登陆的第一个图书馆。我首先查看它的原因是Logrus已经是我项目中依赖项之一的间接依赖性之一。

Logrus位于该位置第二。 Zerolog比Logrus快,但有一个原因。

Zerolog

如果您从logrus切换的情况下,要使用Zerolog的主要原因是性能。 Go的速度非常快。但是,如果您的记录仪使其缓慢,那么您的应用程序将无法从GO中实现。

这就是Zerolog的Readme所说的:

Zerolog Package提供了一个专用于JSON输出的快速简单的记录器。

Zerolog的API旨在提供出色的开发人员体验和惊人的性能。其独特的链式API允许Zerolog通过避免分配和反射来编写JSON(或CBOR)日志事件。

zap

zap 可能是最喜欢的伐木库。在 817 对R/Golang投票的人中, 315 投票赞成ZAP。

根据其github上的统计数据,ZAP是那里最快的记录仪。

此外,ZAP仅支持最近的两个次要版本。因此,如果您的项目由于某种原因无法更新到GO的最新版本。

结论

有一个意见,我觉得在得出结论之前,我会使用它们。但是在这次民意调查之后,我认为我将立即开始使用ZAP。你有什么意见?当您选择记录库时,为什么要素负责。