1个不稳定版本
新 0.1.0 | 2024年8月11日 |
---|
#11 in #rate
每月下载次数:97次
9KB
128 行
log_limit
一个速率限制日志crate。简单地将log crate包装起来,如果特定的日志行调用太频繁,则忽略写入日志。这由阈值和周期控制。如果达到阈值,则在此周期剩余时间内忽略日志。当达到阈值和下一个周期开始时,记录警告以通知用户正在忽略日志,并提供被忽略的日志数量。
示例
use std::thread;
use std::time::Duration;
use log_limit::info_limit;
use simple_logger::SimpleLogger;
SimpleLogger::new().init().unwrap();
for i in 0..10 {
log::debug!("Loop number: {i}");
info_limit!(3, Duration::from_millis(5), "Rate limit log for {i}");
thread::sleep(Duration::from_millis(1));
}
// Produces:
//
// 2024-08-10T15:45:41.278Z DEBUG [log_limit_user] Loop number: 0
// 2024-08-10T15:45:41.278Z INFO [log_limit_user] Rate limit log for 0
// 2024-08-10T15:45:41.279Z DEBUG [log_limit_user] Loop number: 1
// 2024-08-10T15:45:41.279Z INFO [log_limit_user] Rate limit log for 1
// 2024-08-10T15:45:41.280Z DEBUG [log_limit_user] Loop number: 2
// 2024-08-10T15:45:41.280Z INFO [log_limit_user] Rate limit log for 2
// 2024-08-10T15:45:41.280Z WARN [log_limit] Starting to ignore the previous log for less than 5ms
// 2024-08-10T15:45:41.281Z DEBUG [log_limit_user] Loop number: 3
// 2024-08-10T15:45:41.282Z DEBUG [log_limit_user] Loop number: 4
// 2024-08-10T15:45:41.283Z DEBUG [log_limit_user] Loop number: 5
// 2024-08-10T15:45:41.283Z WARN [log_limit] Ignored 3 logs since more than 5ms ago. Starting again...
// 2024-08-10T15:45:41.283Z INFO [log_limit_user] Rate limit log for 5
// 2024-08-10T15:45:41.285Z DEBUG [log_limit_user] Loop number: 6
// 2024-08-10T15:45:41.285Z INFO [log_limit_user] Rate limit log for 6
// 2024-08-10T15:45:41.286Z DEBUG [log_limit_user] Loop number: 7
// 2024-08-10T15:45:41.286Z INFO [log_limit_user] Rate limit log for 7
// 2024-08-10T15:45:41.286Z WARN [log_limit] Starting to ignore the previous log for less than 5ms
// 2024-08-10T15:45:41.287Z DEBUG [log_limit_user] Loop number: 8
// 2024-08-10T15:45:41.288Z DEBUG [log_limit_user] Loop number: 9
待办事项
- 实现线程局部变体(你能让它听起来怎么样?)
- 进行一些基准测试和优化
- 处理所有代码中的待办事项。
- 找出是否有更多的用例和配置需求
- 找出为什么我的宏API看起来与日志API不同?目标是什么?
- 添加更多文档
- 找出正确的API
依赖项
~87KB