2个不稳定版本
0.2.0 | 2024年6月20日 |
---|---|
0.1.0 | 2024年6月20日 |
#85 in 缓存
33KB
791 行
Rust的快速低延迟日志库
简介
low-latency-log
是一个高性能、低延迟的Rust日志库。
特性
- 非常低延迟:
low-latency-log
注重性能,采用最小化关键数据结构的大小、避免在关键路径上使用锁、缓存格式化字符串等技术。 - 异步日志记录:
low-latency-log
将所有重日志操作(如格式化、时间转换等)卸载到独立线程,确保调用线程不会被阻塞。
基准测试
low-latency-log
提供的p999延迟与quill
相当,并在吞吐量方面优于quill
、spdlog-rs
、ftlog
和fast_log
。
更多详细信息,请参阅基准测试。
要构建基准测试二进制文件,请运行
cargo b -r -p bench
使用示例
use low_latency_log::{info, Level};
use std::fs;
fn main() {
let rc = RollingCondition::new().daily();
// Remember to keep the following guard, otherwise the global logger stops immediately when the guard auto-drops
let _guard = low_latency_log::Logger::new(rc, "/dev/shm".to_string(), "log.log".to_string())
.cpu(1)
.init()
.unwrap();
for i in 1..1_000_001 {
info!("number {}", i);
}
// _guard auto-dropped and log flushed
}
待办事项
以下优化正在进行中
- 优化std
format!
。 - 改进
ufmt
以提供更多类型的格式化支持(例如,浮点类型)。 - 支持自定义格式类型,因为目前
low_latency_log
输出固定的时间和日志格式。 - 优化使用
log
crate时的性能。
low_latency_log
受到了以下项目的极大启发
许可证
本项目采用Apache许可证。
部分代码来自logflume
项目。有关更多信息,请参阅LICENSE-LOGFLUME。
依赖项
~3.5MB
~66K SLoC