介绍
我最近在GO社区进行了一项民意调查,涉及他们在个人或专业项目中使用的伐木库。结果很有趣。在这篇文章中,我记下了最喜欢的伐木库,这是我对它们的看法。
民意调查结果
这是我在r/golang,Twitter上的The Go Programming Language社区和my LinkedIn following上进行的民意调查结果。
结果分析
候选人的选择
为了选择民意调查的候选人,我没有进行任何详尽的研究。我一直在寻找在project at work中使用的库,最终在sirupsen/logrus中使用了该图书馆,该库已经被该项目中的一个依赖项使用了。
阅读了logrus的回教徒后,我注意到它处于维护模式,并且没有积极开发新功能。我仍然决定使用此库,因为Logrus是一个成熟的项目,并且具有日志库应具有的所有功能。
Logrus Readme建议使用其他库,例如Zerolog,Zap和Apex。
我与这四个候选人一起在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。你有什么意见?当您选择记录库时,为什么要素负责。