您现在的位置是:首页 > 文章详情

tklog 0.2.1 — Rust 高性能日志库,mod 支持*匹配

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

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 新增功能性能压测数据

说明: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
原文链接:https://www.oschina.net/news/314309/tklog-0-2-1-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章