tklog v0.0.9 :Rust 灵活高效日志管理
tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置
核心特点
- 高性能同步与异步日志记录:tklog 支持高效的同步与异步日志记录,确保即使在高负载环境下也能保持良好的性能。
- 灵活的日志格式定制:用户可以根据需要自定义日志输出格式,包括日志级别、时间戳格式等。
- 智能日志文件管理:支持按时间或文件大小自动分割日志文件,以及文件数量的滚动管理,有助于维持日志目录的整洁。
- 日志压缩与备份:支持对日志文件进行压缩归档,方便长期存储和备份。
- 官方标准 API 兼容:与 Rust 官方日志库标准 API 兼容,便于集成使用。
- 模块级配置:允许在不同的模块中独立设置日志参数,增强了灵活性。
0.0.9 版本更新
- v0.0.9 版本,tklog 引入了自定义日志处理函数的功能,开发者可以通过
set_custom_handler()
方法来定义自己的日志处理逻辑。
说明:custom_handler
来自 bronya0 给 go-logger 添加的等价功能 CustomHandler
, 该功能在go编程中非常实用,在rust中同样很实用,它可以由开发者通过捕获日志记录时的日志级别,日志模块,文件名等信息,做必要的业务处理,如捕获error日志进行邮件通知等。因此在同为日志框架的tklog
添加相同的功能,可以分别在同步日志与异步日志中添加
-
LOG.set_custom_handler(custom_handler)
同步ASYNC_LOG.set_custom_handler(custom_handler)
异步
- custom_handler 示例
#[test] fn test_custom() { fn custom_handler(lc: &LogContext) -> bool { println!("level >>>>>>>>>>>>>>>>>{:?}", lc.level); println!("message >>>>>>>>>>>>>>>>>{:?}", lc.log_body); println!("filename >>>>>>>>>>>>>>>>>{:?}", lc.filename); println!("line >>>>>>>>>>>>>>>>>{:?}", lc.line); println!("modname >>>>>>>>>>>>>>>>>{:?}", lc.modname); if lc.level == LEVEL::Debug { println!("{}", "debug now"); return false; } true } LOG.set_custom_handler(custom_handler); debug!("000000000000000000"); info!("1111111111111111111"); thread::sleep(Duration::from_secs(1)) }
执行结果
---- test_custom stdout ---- level >>>>>>>>>>>>>>>>>Debug message >>>>>>>>>>>>>>>>>"000000000000000000" filename >>>>>>>>>>>>>>>>>"tests estsynclog.rs" line >>>>>>>>>>>>>>>>>143 modname >>>>>>>>>>>>>>>>>"testsynclog" debug now level >>>>>>>>>>>>>>>>>Info message >>>>>>>>>>>>>>>>>"1111111111111111111" filename >>>>>>>>>>>>>>>>>"tests estsynclog.rs" line >>>>>>>>>>>>>>>>>144 modname >>>>>>>>>>>>>>>>>"testsynclog" [INFO] 2024-08-05 15:39:07 testsynclog.rs 144:1111111111111111111
说明:
- 当
fn custom_handler(lc: &LogContext) -> bool
返回true时,tklog调用custom_handler
执行自定义函数后,继续执行tklog的打印流程。当返回false时,tklog不再执行tklog的打印程序。直接返回。如示例中所示,当年日志级别为Debug时,返回false,所以,tklog的Debug日志,不再打印出来。
tklog 快速使用
- 添加依赖
[dependencies] tklog = "0.0.9" # "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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache Tomcat 10.1.28 发布
Apache Tomcat 10.1.28 现已发布,此版本实现了作为 Jakarta EE 10 平台一部分的规范。 在 Tomcat 9 和更早版本上运行的应用程序,如果不做修改,将无法在 Tomcat 10 上运行。为 Tomcat 9 和更早版本设计的基于 Java EE 的应用程序可以放在$CATALINA_BASE/webapps-javaee目录下,Tomcat 会自动将其转换为 Jakarta EE 并复制到 webapps 目录。此转换是通过Apache Tomcat 的 Jakarta EE 迁移工具进行的,此工具也可以单独下载,以供离线使用。 一些值得关注的变化有: 添加对 RFC 8297 (Early Hints) 的支持。应用程序可以通过将 HttpServletResponse 转换为 org.apache.catalina.connector.Reponse,然后调用方法 void sendEarlyHints() 来使用此功能。 将 HTTP/2 与 HTTP/1.1 对齐,并默认回收容器内部请求和响应处理对象。此行为可以通过 HTTP/2 升级协议上...
- 下一篇
AIEditor 入选 GVP 了,也获得了国外的媒体报道!
努力终有回报! AIEditor 自 2023 年开源至今,发布了近 30 个版本,今天,它也正式加入了 Gitee 的 GVP 大家庭。 这对 AIEditor 来说是一个全新的开始。 与此同时,AIEditor 也开始推出海外版本,把 AIEditor 推向海外,并在 Producthunt 上打榜并获得了 第一名的成绩!同时也获得了国外的一些媒体报道。 (英语科技站点) (西班牙语科技站点) (日语科技站点) (twitter 的自发传播) AIEditor 拿到了国内 Gitee 的 “最有价值的开源项目”,也看到国外这些自发的报道和转发,很是欣慰。 我们持续坚持 “长期主义”,相信一定可以把 AIEditor 打造成为一个世界级的、一流的 AI 编辑器产品! AIEditor 官方站点:https://aieditor.dev
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7