go高性能日志库simplelog与go-logger


simplelog是go高性能日志库工具,开发用于高速输出数据库binlog日志。由于功能与go-logger有重合,后两个项目代码合并.功能一致
都支持日志级别输出,日志格式化,日志文件按时间备份,按大小备份,指定保留日志最大份数,日志文件压缩备份等特性.
simplelog源码地址:  github.com/donnie4w/simplelog
go-logger源码地址:  github.com/donnie4w/go-logger


特征:

    1. simplelog 具备极高的性能和极低的内存消耗
    2. 性能测试中,在常规操作下,使用格式化输出,相同长度的打印数据。 与 uber 的 zap 日志库,和 go 自带的 log 日志库 相比较, simplelog 在性能上和内存消耗上都占据一定优势
    3. 提供直接写文件的方法 (write) ,该方法与直接调用底层接口写文件数据效率相同,无其他性能消耗。 可用于极高性能要求写文件数据。 该方法同样支持日志文件按时间,文件大小备份,支持保留日志最大份数与日志文件压缩备份
    4. 支持根据日志级别打印日志,控制台日志,格式化日志,日志文件备份,压缩日志文件,日志文件数限制等特性



性能测试:


测试说明

测试日志库描述
zap"go.uber.org/zap" 高性能日志库常规格式化输出
simplelogsimplelog 常规格式化输出
simplelog NoFORMATsimplelog 无格式化输出
simplelog writesimplelog write 方法写数据
go/ loggo 自带 log 库格式化输出



测试数据 1

ns/opB/opallocs/op
zap182289268763366
zap173049070373366
simplelog173277764612963
simplelog175844664192963
simplelog NoFORMAT267055643401121
simplelog NoFORMAT269415441921121
simplelog write294905840871121
simplelog write284364940931121
go/ log216205255512963
go/ log213916857152963



Parallel 测试 2

ns/opB/opallocs/op
zap1000000105723366
zap1000000104143376
simplelog133030088032963
simplelog136303489452963
simplelog NoFORMAT205391170761121
simplelog NoFORMAT167736068881121
simplelog write193993363041121
simplelog write192235269381121
go/ log120403996122963
go/ log136280788752963

Parallel 测试 3

ns/opB/opallocs/op
zap1000000103313366
zap1000000105953376
simplelog135283488382963
simplelog141145887542963
simplelog NoFORMAT226659753311121
simplelog NoFORMAT209045556311121
simplelog write206287057461121
simplelog write203779259631121
go/ log126044593982803
go/ log127256091232803

Parallel 测试 4

ns/opB/opallocs/op
zap1000000102303366
zap1000000102763376
simplelog133255587742963
simplelog139125692262963
simplelog NoFORMAT215400854831121
simplelog NoFORMAT211579558531121
simplelog write205972260691121
simplelog write196809261161121
go/ log124976799302803
go/ log121171998222803

打印各库输出结果 (其中一行)



2023-07-10T19:58:15.138+0800    DEBUG   logtest/benchmark_test.go:82    >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[DEBUG]2023/07/10 19:58:57 benchmark_test.go:94: >>>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
[debug]2023/07/10 20:00:53.634554 benchmark_test.go:125: >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

测试程序

github logtest

结论:

性能比较: simplelog write  simplelog NoFORMAT > simplelog > zap >  go/ log

说明:

  • simplelog write 底层io直接写文件;
  • simplelog NoFORMAT 为无格式化模式写日志,并且使用内存复用,所以特定条件下性能会高于simplelog write
  • simplelog 为常规模式下打印debug等级别的日志数据,格式:[DEBUG]2023/07/10 19:58:57 benchmark_test.go:94: >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  • zap为   uber团队的高性能日志库 go.uber.org/zap
  • go/log 为go自带日志库 log



有任何问题或建议请Email:donnie4w@gmail.comhttps://tlnet.top/contact  发信给我,谢谢!