【大家的项目】tklog0.2.1—Rust高性能日志库,mod支持*匹配

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


v0.2.1 版本更新
tklog 支持mod多级别 * 匹配子模块名
  1. tklog提供set_mod_option 函数 设置Logger对象指定mod的日志参数

  2. 在项目中,可以使用全局LOG对象,同时对多个mod设置独立的日志参数

  3. 不同mod可以设置不同的日志级别,日志格式,日志文件等

set_mod_option 示例:
tklog::LOG.set_mod_option("testlog::module1",LogOption{level:Some(LEVEL::Debug),console: Some(false),format:None,formatter:None,fileoption: Some(Box::new(FileTimeMode::new("day.log", tklog::MODE::DAY, 0,true)))});
  • testlog::module1 为设置的模块名,可以通过rust内置宏 module_path!() 打印出当前模块名

  • 当tklog在模块 testlog::module1 中使用时,将tklog将使用该LogOption对象

set_mod_option 示例2:
tklog::LOG.set_mod_option("testlog::*",LogOption{level:Some(LEVEL::Debug),console: Some(false),format:None,formatter:None,fileoption: Some(Box::new(FileTimeMode::new("day.log", tklog::MODE::DAY, 0,true)))});
  • testlog::* tklog支持用*匹配所有子模块,testlog::*表示testlog的所有子模块

  • testlog::module1::* 表示testlog::module1的所有子模块

LogOption对象说明
  • level 日志级别

  • format 日志格式

  • formatter 日志输出自定义格式

  • console 控制台日志设置

  • fileoption 文件日志设置

完整的mod示例

mod module2 {
    use std::{thread, time::Duration};
    use tklog::{handle::FileTimeMode, LogOption, LEVEL};
    pub fn testmod() {
        tklog::LOG.set_mod_option("testlog::module2::*", LogOption { level: Some(LEVEL::Info), format: None, formatter: None, console: None, fileoption: Some(Box::new(FileTimeMode::new("module2.log", tklog::MODE::DAY, 0, true))) });
    }
    mod m2 {
        pub fn testmod() {
            tklog::debug!("module2,tklog api,LOG debug log>>", 123);
            tklog::info!("module2,tklog api,LOG info log>>", 456);
            thread::sleep(Duration::from_secs(1))
        }
    }
}

#[test]
fn testmod2() {
    module2::m2::testmod();
}

说明:testlog::module2::*

匹配mod  testlog的下 mod module2下的所有mod

0.2.1 新增功能性能压测数据

8a2f57c0a6082653db5d19d40a0b70e4.jpeg 99d72aa8f4e3cc07775b26d53920a47a.jpeg a2a4a853ea4eeea4f24014b42f1e1009.jpeg

说明:mod采用*匹配后的打印性能与常规日志打印性能基本一致。


快速使用tklog

项目引入
[dependencies]
tklog = "0.2.1"   #   "0.0.x" 当前版本
直接调用
use tklog::{trace,debug, error, fatal, info,warn}
fn testlog() {
    trace!("trace>>>>", "aaaaaaaaa", 1, 2, 3, 4);
    debug!("debug>>>>", "bbbbbbbbb", 1, 2, 3, 5);
    info!("info>>>>", "ccccccccc", 1, 2, 3, 5);
    warn!("warn>>>>", "dddddddddd", 1, 2, 3, 6);
    error!("error>>>>", "eeeeeeee", 1, 2, 3, 7);
    fatal!("fatal>>>>", "ffffffff", 1, 2, 3, 8);
}

说明:默认打开控制台日志,没有写日志文件。打印结果:

[TRACE] 2024-05-26 11:47:22 testlog.rs 27:trace>>>>,aaaaaaaaa,1,2,3,4
[DEBUG] 2024-05-26 11:47:22 testlog.rs 28:debug>>>>,bbbbbbbbb,1,2,3,5
[INFO] 2024-05-26 11:47:22 testlog.rs 29:info>>>>,ccccccccc,1,2,3,5
[WARN] 2024-05-26 11:47:22 testlog.rs 30:warn>>>>,dddddddddd,1,2,3,6
[ERROR] 2024-05-26 11:47:22 testlog.rs 31:error>>>>,eeeeeeee,1,2,3,7
[FATAL] 2024-05-26 11:47:22 testlog.rs 32:fatal>>>>,ffffffff,1,2,3,8

参考资料

[1]

简介: https://tlnet.top/tklog

[2]

Github地址: https://github.com/donnie4w/tklog

[3]

仓库地址: https://crates.io/crates/tklog

[4]

《tklog与log4rs 的基准测试》: https://tlnet.top/article/22425202

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值