simplelog是go高性能日志库工具,开发用于高速输出数据库binlog日志。由于功能与go-logger有重合,后两个项目代码合并.功能一致
都支持日志级别输出,日志格式化,日志文件按时间备份,按大小备份,指定保留日志最大份数,日志文件压缩备份等特性.
simplelog源码地址: github.com/donnie4w/simplelog
go-logger源码地址: github.com/donnie4w/go-logger
simplelog
具备极高的性能和极低的内存消耗
性能测试中,在常规操作下,使用格式化输出,相同长度的打印数据。 与 uber 的 zap 日志库,和 go 自带的 log 日志库 相比较, simplelog 在性能上和内存消耗上都占据一定优势
提供直接写文件的方法 (write) ,该方法与直接调用底层接口写文件数据效率相同,无其他性能消耗。 可用于极高性能要求写文件数据。 该方法同样支持日志文件按时间,文件大小备份,支持保留日志最大份数与日志文件压缩备份
支持根据日志级别打印日志,控制台日志,格式化日志,日志文件备份,压缩日志文件,日志文件数限制等特性
测试说明
测试日志库 | 描述 |
---|---|
zap | "go.uber.org/zap" 高性能日志库常规格式化输出 |
simplelog | simplelog 常规格式化输出 |
simplelog NoFORMAT | simplelog 无格式化输出 |
simplelog write | simplelog write 方法写数据 |
go/ log | go 自带 log 库格式化输出 |
测试数据 1
ns/op | B/op | allocs/op | ||
---|---|---|---|---|
zap | 1822892 | 6876 | 336 | 6 |
zap | 1730490 | 7037 | 336 | 6 |
simplelog | 1732777 | 6461 | 296 | 3 |
simplelog | 1758446 | 6419 | 296 | 3 |
simplelog NoFORMAT | 2670556 | 4340 | 112 | 1 |
simplelog NoFORMAT | 2694154 | 4192 | 112 | 1 |
simplelog write | 2949058 | 4087 | 112 | 1 |
simplelog write | 2843649 | 4093 | 112 | 1 |
go/ log | 2162052 | 5551 | 296 | 3 |
go/ log | 2139168 | 5715 | 296 | 3 |
Parallel 测试 2
ns/op | B/op | allocs/op | ||
---|---|---|---|---|
zap | 1000000 | 10572 | 336 | 6 |
zap | 1000000 | 10414 | 337 | 6 |
simplelog | 1330300 | 8803 | 296 | 3 |
simplelog | 1363034 | 8945 | 296 | 3 |
simplelog NoFORMAT | 2053911 | 7076 | 112 | 1 |
simplelog NoFORMAT | 1677360 | 6888 | 112 | 1 |
simplelog write | 1939933 | 6304 | 112 | 1 |
simplelog write | 1922352 | 6938 | 112 | 1 |
go/ log | 1204039 | 9612 | 296 | 3 |
go/ log | 1362807 | 8875 | 296 | 3 |
Parallel 测试 3
ns/op | B/op | allocs/op | ||
---|---|---|---|---|
zap | 1000000 | 10331 | 336 | 6 |
zap | 1000000 | 10595 | 337 | 6 |
simplelog | 1352834 | 8838 | 296 | 3 |
simplelog | 1411458 | 8754 | 296 | 3 |
simplelog NoFORMAT | 2266597 | 5331 | 112 | 1 |
simplelog NoFORMAT | 2090455 | 5631 | 112 | 1 |
simplelog write | 2062870 | 5746 | 112 | 1 |
simplelog write | 2037792 | 5963 | 112 | 1 |
go/ log | 1260445 | 9398 | 280 | 3 |
go/ log | 1272560 | 9123 | 280 | 3 |
Parallel 测试 4
ns/op | B/op | allocs/op | ||
---|---|---|---|---|
zap | 1000000 | 10230 | 336 | 6 |
zap | 1000000 | 10276 | 337 | 6 |
simplelog | 1332555 | 8774 | 296 | 3 |
simplelog | 1391256 | 9226 | 296 | 3 |
simplelog NoFORMAT | 2154008 | 5483 | 112 | 1 |
simplelog NoFORMAT | 2115795 | 5853 | 112 | 1 |
simplelog write | 2059722 | 6069 | 112 | 1 |
simplelog write | 1968092 | 6116 | 112 | 1 |
go/ log | 1249767 | 9930 | 280 | 3 |
go/ log | 1211719 | 9822 | 280 | 3 |
打印各库输出结果 (其中一行)
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
测试程序
结论:
性能比较: simplelog write ≥ simplelog NoFORMAT > simplelog > zap > go/ log
说明:
[DEBUG]2023/07/10 19:58:57 benchmark_test.go:94: >>>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
有任何问题或建议请Email:donnie4w@gmail.com或 https://tlnet.top/contact 发信给我,谢谢!