simplelog 是 golang 的高性能日志库
simplelog是go的高性能日志工具,支持日志格式化,日志按时间备份,或按大小备份,支持保留日志份数,日志文件压缩等特性.
simplelog与go-logger目前是同一实现
一般simplelog先更新,稳定后更新到go-logger
- github.com/donnie4w/go-logger
- github.com/donnie4w/simplelog
- simplelog具备极高的性能和极低的内存消耗
- 性能测试中,在常规操作下,使用格式化输出,相同长度的打印数据。 与 uber的zap日志库,和 go自带的log日志库 相比较, simplelog 在性能上和内存消耗上都占据一定优势
- 同时也支持将需要分配内存的的功能完全去掉(使用:FORMAT_NANO),效率与内存消耗等同于直接写文件;也提供直接写文件的方法(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
测试程序