tklog 0.2.8 — Rust 高性能日志库
tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数设置
v0.2.8 更新内容
- 增加 控制台日志独立格式化功能
- 通过
set_console_body_fmt
可以设置日志内容在控制台的显示格式,与set_body_fmt
类似,不同的是set_body_fmt
对控制台信息与文件信息均有效。 - 测试程序地址: test_0_2_8.rs
示例:
fn testlog2() { LOG.set_console(true).set_cutmode_by_size("028test2.log", 1 << 20, 0, false).set_level(LEVEL::Trace).set_attr_format(|fmt| { fmt.set_console_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(), } }); 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[44m", trimmed_body), //背景蓝色 LEVEL::Debug => format!("{}{}", "\x1b[46m", trimmed_body), //背景青色 LEVEL::Info => format!("{}{}", "\x1b[42m", trimmed_body), //背景绿色 LEVEL::Warn => format!("{}{}", "\x1b[43m", trimmed_body), //背景黄色 LEVEL::Error => format!("{}{}", "\x1b[41m", trimmed_body), //背景红色 LEVEL::Fatal => format!("{}{}", "\x1b[45m", 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)) }
说明:示例对控制台日志进行独立设置
输出结果
控制台日志输出:
文件日志输出:
可以看到,当 调用 set_console_body_fmt
设置控制台日志时,控制台与文件将分别输出设置的日志格式。
tklog 快速使用
安装tklog
方法一:使用 cargo add
命令
cargo add tklog
方法二:手动编辑 Cargo.toml
tklog = "0.2.8"
测试用例
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); }
tklog性能
Tklog 有极高的性能,特别是在linux环境中,具体测试参考文章
在linux环境中,tklog比同类型的日志库性能高10倍以上,在windows环境中,性能则为同类型日志库2倍左右
详细使用方法请参考 readme.md

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
UOS AI 2.0 发布,开启原生 AIOS 时代!
PC终端作为最主流最高频的生产力工具,其操作系统承载着用户的大量场景、数据以及技能。随着生成式人工智能浪潮的来临,新的技术架构、交互模式和新的生态,都需要操作系统承担起更多责任,即需要新一代的操作系统产品 ——AIOS,来应对人工智能带来的新影响,实现和完成生成式的新概念和新影响。 12月10日,以“创变·求真”为主题的2024中国操作系统大会在北京盛大召开。会上,UOS AI 2.0 正式发布,带来3大系统级交互感知、AI效率办公全家桶,以及AIOS生态的全面升级,正式开启原生AIOS时代。 1 个定义,2 大场景 deepin AIOS,全面融合硬件的多种AI算力,通过端云结合的方式为用户提供系统级、全场景智能化体验,并提供丰富的智能体生态和原生AI能力,是智能时代的新型生产力平台。 deepin AIOS 聚焦两大核心场景: 生产力场景——功能上国绕生产力提升和生产效率提介。 AI生态场景——面向底层硬件构建AIOS底座和硬件生态,面向上层,构建AI应用生态,统一服务,统一赋能。 3 大系统级交互感知 “系统级交互2.0”,任意时刻任意界面皆可使用AL! AI搜索一—一句话随...
- 下一篇
🔥※【mybatis-mp】一款非常非常好用的 ORM 框架:1.7.8-RC6 预览版发布!
官网 :https://mybatis-mp.cn 1.7.8-RC6更新内容: 1:优化withQuery 2:优化page分页参数,可完全定制page类 3:update增加set(Getter<T> field, V value, UpdateStrategy updateStrategy)根据update策略对参数进行忽略或NULL或异常 4:优化逻辑初始值:save时,优先使用逻辑删除注解里的默认值 5:join语句把逻辑删除的条件从where放到on中 6:增加原生sql update delete insert操作 7:增加truncate方法 8:优化逻辑删除和多租户 1.7.7 更新内容: 1:QueryChain,DeleteChain,InsertChain,UpdateChain 支持 BasicMapper 方法 2:支持通用 BasicMapper,可不需要创建多个实体类 Mapper;一个 BasicMapper 即可使用所有功能 3:正式支持单 Mapper (写一个 Mapper 即可) 为什么推荐 mybatis-mp ?: mybati...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境