golang 的高性能日志库
go的高性能日志工具,支持日志格式化,日志按时间备份,或按大小备份,支持保留日志份数,日志文件压缩等特性.
- github.com/donnie4w/go-logger
- go-logger具备极高的性能和极低的内存消耗
- 性能测试中,在常规操作下,使用格式化输出,相同长度的打印数据。 与 uber的zap日志库,和 go自带的log日志库 相比较, go-logger 在性能上和内存消耗上都占据一定优势
- 同时也支持将需要分配内存的的功能完全去掉(使用:FORMAT_NANO),效率与内存消耗等同于直接写文件;也提供直接写文件的方法(write). 需要极限效率时,可以使用这两种方式写日志。这两种方式同样支持日志按时间,文件大小备份,支持保留日志份数,日志文件压缩
具体情况参考测试数据,与测试程序
性能测试:
测试说明:以下simplelog即go-logger
| 测试日志库 |
描述 |
| 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
测试程序
github logtest