tklog 0.2.4 — Rust 高性能日志库,性能显著提高


tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数设置
  1. 简介
  2. Github地址
  3. 仓库地址
  4. 《rust日志库性能压测 — log4rs + tracing + tklog》

v0.2.4 版本更新

该版本主要更新为:

  • 在v0.2.3更新内容的基础上,新增支持日志内容的自定义格式化。通过  set_body_fmt 自定义输出日志内容。
  • 优化性能,性能提高30%-50%。

通过 set_body_fmt 函数设置日志标识与时间格式

示例: 通过set_body_fmt 设置不同日志级别输出不用颜色的日志

fn testlog() {
LOG.set_level(LEVEL::Trace).set_attr_format(|fmt| {
fmt.set_body_fmt(|level, body| {
//处理body的末尾换行符
let trimmed_body = if body.ends_with('\n') {
format!("{}{}", body.as_str()[..body.len() - 1].to_string(), "\x1b[0m\n")
} else {
format!("{}{}", body, "\x1b[0m\n")
};

match level {
LEVEL::Trace => format!("{}{}", "\x1b[34m", trimmed_body), //蓝色
LEVEL::Debug => format!("{}{}", "\x1b[36m", trimmed_body), //青色
LEVEL::Info => format!("{}{}", "\x1b[32m", trimmed_body),//绿色
LEVEL::Warn => format!("{}{}", "\x1b[33m", trimmed_body),//黄色
LEVEL::Error => format!("{}{}", "\x1b[31m", trimmed_body), //红色
LEVEL::Fatal => format!("{}{}", "\x1b[41m", trimmed_body), //背景红
LEVEL::Off => "".to_string(),
}
});
});

trace!("trace!", "this is sync log");
debug!("debug!", "this is sync log");
info!("info!", "this is sync log");
warn!("warn!", "this is sync log");
error!("error!", "this is sync log");
fatal!("fata!", "this is sync log");
thread::sleep(Duration::from_secs(1))
}

执行结果:


性能压测数据

 

log_benchmark

测试编号 最小时间 (µs) 最大时间 (µs) 平均时间 (µs) 变化百分比 (%) p 值
1 2.3949 2.4941 2.4428 -0.5586% 0.14
2 2.3992 2.4632 2.4307 -12.388% 0.00
3 2.4525 2.5632 2.5059 -10.548% 0.00
4 2.5650 2.6775 2.6194 -3.5311% 0.79

mod_benchmark

测试编号 最小时间 (µs) 最大时间 (µs) 平均时间 (µs) 变化百分比 (%) p 值
1 2.1946 2.2718 2.2325 -2.5723% 0.96
2 2.2126 2.2920 2.2508 -11.895% 0.00
3 2.2603 2.3693 2.3113 -12.539% 0.00
4 2.4908 2.6440 2.5655 -1.3617% 0.29

2. 总结统计

  • log_benchmark
    • 最小时间: 2.3949 µs
    • 最大时间: 2.6775 µs
    • 平均时间: 2.5160 µs
    • 变化幅度: 从 -0.5586% 到 -12.388%
    • p 值: 大部分测试显著性强(p < 0.05)。
  • mod_benchmark
    • 最小时间: 2.1946 µs
    • 最大时间: 2.6440 µs
    • 平均时间: 2.3430 µs
    • 变化幅度: 从 -2.5723% 到 -12.539%
    • p 值: 大部分测试显著性强(p < 0.05)。

性能统计数据(每次响应时间)

  1. 最小时间: 2.1946 µs
  2. 最大时间: 2.6775 µs
  3. 平均时间: 2.3946 µs

 


性能优化过程中的火焰图变化

 

 

可以看到,tklog的性能在优化过程中有效提高。


相關推薦

2024-10-01

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数

2024-06-04

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API tklog 0.0.3版本主要更新 tklog实现了官方Log接

2024-06-22

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置 tklog相关信息 官网

2024-08-27

tklog是rust高性能结构化日志库 易用,高效,结构化,控制台日志,文件日志,文件切割,文件压缩,同步打印,异步打印 功能 功能支持:控制台日志,文件日志,同步日志,异步日志 日志级别设置:提供与标准库同级

2024-10-19

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数

2024-05-29

如果是格式化日志输出,则为4µs/op以上。(可以参考《 高性能日志库go-logger v2.0.3》中对各日志库的压测数据)。 在异步场景中,tklog提供了对应的方法,支持异步调用。异步方法最大的好处并非在性能上,而是它不会阻塞所在

2024-08-20

分析提供了一个优越的环境,从而确保了编译和运行时的高性能。从编译速度来看,MoonBit 编译 626 个包(package)只需 1.06 秒,比 Rust 快了近 9 倍,运行时间仅为Go的 35分之一。 小 MoonBit 在输出 Wasm 代码体积上相较于传统语言

2023-03-07

深度和法线纹理,实现新的效果并(在某些情况下)提高性能。阴影贴图使用预传递着色器,这使得透明的纹理能够投射阴影 平滑的骨架动画过渡:在两个同时播放的骨架动画之间平滑过渡 改进的 Android 支持:Bevy 现在可以

2023-01-14

是由 Mozilla 开发的编程语言,在提供安全性的同时还具有高性能,最初专门被用于编写浏览器,因此 Chromium 依赖这项技术也非常合适。

2024-06-27

加载与缓存机制进行深入分析,完成了适用于仓颉语言的高性能图像处理算法的研究、开发和优化,并成功实现了QRcode4cj(zxing for cj)和droplet(glide for cj)两个高频图像处理软件库。 1.项目背景简介 HarmonyOS NEXT是华为公司自

2023-07-01

你使用 TEXT、BLOB 或 JSON 列,这可以大大减少你的二进制日志的整体大小,减少磁盘 I/O 和存储以及网络 I/O 和相关 CPU 的开销。 新版本还为 MySQL 8.0 中新增加的二进制日志事务压缩增加了支持。Zstandard用于压缩每个GTID 的内容,

2024-08-10

果分析 日志记录库和方法: Zap:这是一个uber开发的高性能日志库。 Logger:go-logger日志库。 Native Go Log: Go 内置的 log 包。 Slog:这是 Go 1.19 引入的新标准日志库。 Slog 和 Logger 结合:指同时使用go-logger作为slog

2024-07-24

信息。 moon 用 Rust 开发,得益于 Rust 语言的内存安全、高性能和并发处理能力、跨平台等特性,确保构建过程的稳定性和速度。moon 的并行与增量构建功能得益于 n2 项目,(n2 与 ninja 都是由 Evan Martin 创建,n2 相比 ni

2024-07-05

的新发现性能。用户将可以看到一个名为Python Locator的新日志通道,以显示使用这一新工具的发现时间。 可访问 python-environment-tools repo 了解有关此功能和正在进行的工作的更多信息。 Smart Send in native REPL - 在 n