高性能日志库 go-logger v2.0.3 发布

go-logger v2.0.3发布,该版本主要针对性能进行优化.  github地址:https://github.com/donnie4w/go-logger 

go的结构化日志库非常多,go-logger是比较早期开发的一个库, 以简洁为主要特征。simplelog是后期给数据库binlog日志开发的一个日志库,由于功能与go-logger有重合,就把两个库的代码就合并了。目前两个库代都会一起更新,实现是一致的。

go1.21版本就在标准库加上结构化日志库log/slog,该日志库性能非常优越,根据压测结果,slog的性能要比社区常用的第三方结构化日志库好许多,所以大部分项目日志库可以直接使用slog。

go-logger 将继续维护,原因是:

  1. go-logger 比slog占用更少的内存,效率比slog更高
  2. go-logger 对日志文件处理,如 日志文件按大小切分备份,按日期:月,日,时切分备份,日志文件压缩备份,日志文件限制最大文件数等特性,目前slog还不具备这些特征。

go-logger 函数文档


性能测试数据:

输出数据:

2023-09-30T17:37:15.008+0800    DEBUG   logtest/benchmark_test.go:103   >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/09/30 17:37:19 benchmark_test.go:115: >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/06/10 01:25:55.028277 log_test.go:46:>>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/06/10 01:25:55.028277 log_test.go:55:>>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
time=2023-09-30T17:37:38.395+08:00 level=INFO source=benchmark_test.go:164 msg=>>>aaaaaaaaaaaaaaaaaaaaaaa

参数说明:

  • ns/op: 每执行一次消耗的时间
  • B/op:每执行一次消耗的内存
  • allocs/op:每执行一次分配内存次数

结果说明:

  1. 不同日志库输出的数据大小是一致的
  2. Zap:uber 官方go日志库,测试中是 常规格式(包含文件名行号) debug日志输出
  3. Logger:go-logger  测试中是 常规格式(包含文件名行号) debug日志输出
  4. LoggerNoFORMAT:  为go-logger去格式化日志输出
  5. LoggerWrite:  为go-logger提供的原始数据高速写入文件的方法,原是 simplelog 高效输出数据库binlog日志数据的方法
  6. Slog:官方 log/slog  测试为常规格式(包含文件名行号)info 日志输出

可以看到 测试数据

  • 时间消耗: go-logger 4500ns/op左右 ,   slog与zap大致在5600ns/op 左右
  • 内存消耗:go-logger 64B   ,     slog与zap大致在330ns/op 左右    
  • 不同机器跑测试程序会有不同的结果,这个主要是一个比较作用。

测试结果:

  1. 性能      :  go-logger  >  slog  ≥  zap
  2. 内存消耗 : go-logger 远小于  slog 与 zap

说明:go-logger 性能与内存上的优势,主要归功于其内存使用上的优化


多次测试结果:

对比可知,不同时间测试结果都相似

  • 可以看到,这几个日志库的性能都非常高。可以根据项目的实际需求选择使用任一日志库。
  • 如果对性能与内存要求苛刻或对日志文件备份处理有要求时, 建议使用go-logger
  • 如果官方日志库slog已经能满足项目需求,建议使用slog,由官方维护的库总是靠谱的;对于一般业务来说:性能4500ns/op与5600ns/op 并无实质区别。
  • go-logger 会持续进行优化和维护,包括功能与性能.

测试程序

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/260776/go-logger-2-0-3-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。