Rust高性能日志库tklog0.0.3—支持标准log库API

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API

tklog 0.0.3版本主要更新
  1. tklog实现了官方Log接口,支持官方标准化日志API的调用
  2. 实现了官方log库API的异步场景调用。

项目引入

复制代码
[dependencies]
tklog = "0.0.3"   #   "0.0.x" 当前版本

1. 启用官方log库API的方法

tklog通过调用 **uselog()**函数 来启用官方log的API支持

使用示例
复制代码
use std::{thread, time::Duration};
use tklog::{Format, LEVEL, LOG};
fn test_synclog() {
    //初始化
    LOG.set_console(true)
        .set_level(LEVEL::Debug)
        .set_format(Format::LevelFlag | Format::Microseconds | Format::ShortFileName)
        .set_cutmode_by_size("logsize.log", 10000, 10, true)
        .uselog(); //启用官方log库
    log::trace!("trace>>>>{}{}{}{}{}", "aaaa", 1, 2, 3, 4);  //trace级别小于设置的Debug,则不执行打印
    log::debug!("debug>>>>{}{}",1,2);
    log::info!("info log");
    log::warn!("warn log");
    log::error!("error log");
    thread::sleep(Duration::from_secs(1))
}
执行结果:
复制代码
[DEBUG] 09:10:56.857540 logapi.rs 19:debug>>>>12
[INFO] 09:10:56.857824 logapi.rs 20:info log
[WARN] 09:10:56.857878 logapi.rs 21:warn log
[ERROR] 09:10:56.857890 logapi.rs 22:error log
2. 异步场景中启用 log库API
复制代码
use std::{thread, time::Duration};
use tklog::{Format, LEVEL, ASYNC_LOG};
async fn test_synclog() {
    //初始化
    ASYNC_LOG.set_console(false)
        .set_level(LEVEL::Trace)
        .set_cutmode_by_size("asynclogsize.log", 10000, 10, true).await
        .uselog(); //启用官方log库
    log::trace!("trace async log>>>>{}{}{}{}{}", "aaaaaaaaa", 1, 2, 3, 4);
    log::debug!("debug async log>>>>{}{}",1,2);
    log::info!("info async log");
    log::warn!("warn async log");
    log::error!("error async log");
    tokio::time::sleep(tokio::time::Duration::from_secs(3)).await;
}
执行结果:
复制代码
[TRACE] 2024-05-31 09:18:34 :trace async log>>>>aaaaaaaaa1234
[DEBUG] 2024-05-31 09:18:34 :debug async log>>>>12
[INFO] 2024-05-31 09:18:34 :info async log
[WARN] 2024-05-31 09:18:34 :warn async log
[ERROR] 2024-05-31 09:18:34 :error async log

注意:

调用官方log库API属于全局单例调用,而使用 LOG.uselog() 或 ASYNC_LOG.uselog()启用API 是常规实例与异步实例的不同调用 ,LOG与ASYNC_LOG是不同实例,调用uselog()后,会将log库的实际执行实例设置为本身。在项目中如果反复调用uselog(),要防止后面执行实例覆盖前面实例后可能出现的日志打印问题。


tklog相关信息

  1. 官网
  2. 项目源码
  3. 仓库
  4. 《tklog与log4rs 的基准测试》
相关推荐
轻舟技术A1 小时前
Pi 的 Rust 实现来了:rpi,不止一个终端 Agent
开发语言·后端·rust
wflynn4 小时前
GitHub 今日推荐|wordcraft:用 Rust 重写 Word 内核并开放给 AI 调用
rust·开源·github
I'm Jie4 小时前
【开源】7 天,我用 Rust 复刻了 FinalShell!Rhost v1.0.0 发布
开发语言·rust·开源
小灰灰搞电子6 小时前
Rust+Slint 实现一个终端软件源码分享(半成品)
开发语言·rust
恋喵大鲤鱼6 小时前
Rust str 与 String 类型的区别
rust
miofly7 小时前
GitHub 今日推荐|fsearch:Rust 打造 macOS 毫秒级全盘文件名与内容搜索工具
rust·开源·github
大鹏的NLP博客8 小时前
Rust 的本质:用数学约束实现编译期内存安全
安全·rust
Kapaseker8 小时前
Rust 读多写少还在用 Mutex?别让线程白白排队
rust
EatFan9 小时前
2026 Rust 后端技术栈选型:Axum 0.8 + Tokio + SQLx 全链路怎么搭
开发语言·后端·rust·tokio·serde·axum·sqlx
Zoom19 小时前
【开源】7 天,我用 Rust 复刻了 FinalShell!Rhost v1.0.0 发布
rust·electron·shell