Rust 高性能日志库 tklog 0.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 的基准测试》

相關推薦

2024-08-27

tklog是rust高性能结构化日志库 易用,高效,结构化,控制台日志,文件日志,文件切割,文件压缩,同步打印,异步打印 功能 功能支持:控制台日志,文件日志,同步日志,异步日志 日志级别设置:提供与标准库同级

2024-06-22

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置 tklog相关信息 官网

2024-05-29

如果是格式化日志输出,则为4µs/op以上。(可以参考《 高性能日志库go-logger v2.0.3》中对各日志库的压测数据)。 在异步场景中,tklog提供了对应的方法,支持异步调用。异步方法最大的好处并非在性能上,而是它不会阻塞所在

2022-02-14

将完全停止使用 Log4j,并切换到 java.util.logging 作为标准日志框架。 官方表示,基于 IntelliJ 平台的 IDE 不受 Log4j 漏洞的影响,因为它们使用了 Log4j 1.2 的修复版本,并删除了所有与网络相关的代码,而且 Log4j 库的第 1 版和

2024-08-10

果分析 日志记录库和方法: Zap:这是一个uber开发的高性能日志库。 Logger:go-logger日志库。 Native Go Log: Go 内置的 log 包。 Slog:这是 Go 1.19 引入的新标准日志库。 Slog 和 Logger 结合:指同时使用go-logger作为slog

2022-07-02

在可以使用cargo add直接从命令行添加新的依赖项。该命令支持指定功能和版本。它也可以用来修改现有的依赖项。 例如: cargo add log cargo add serde --features derive cargo add nom@5 有关更多信息,可参阅 cargo 文件。 #[default]&n

2022-09-15

够强大的功能: 命令行参数与配置文件解析库(flag) 高性能日志库(log) 单元测试框架(unitest) go-style 协程 基于协程的网络编程框架 高效 JSON 库 基于 JSON 的 RPC 框架 面向玄学编程 原子操作(atomic) 随机数生成器(random

2023-10-09

go-logger v2.0.3发布,该版本主要针对性能进行优化.  github地址:https://github.com/donnie4w/go-logger  go的结构化日志库非常多,go-logger是比较早期开发的一个库, 以简洁为主要特征。simplelog是后期给数据库binlog日志开发的一个

2023-06-03

nbsp;智能扫描支持从 MySQL 实例在线抓取慢 SQL 在原先的慢日志扫描任务中,创建扫描任务后,还需进入终端配置scannerd 进程,扫描任务配置流程相对较长。本次优化使得 sqle 可以直接从慢日志表中采集数据,避免用户进入终端操

2022-09-20

盾。现在,随着 Rust 社区逐渐发展壮大且 Mozilla 结束直接支持,Rust 中的这种紧张关系似乎也在日益加重。尽管有很多人从事基本的维护工作,但往往人手不足;一些重要领域也缺乏资源、缺乏引导贡献的战略工作或努力。 Nick&

2023-07-15

vis_file = "...")]和#[debug_visualizer(gdb_script_file = "...")], 它们支持将 Natviz 描述和 GDB 脚本嵌入到 Rust 库中,以在检查这些库创建的数据结构时改进调试器输出。Rust 本身已经为标准库打包了类似的脚本一段时间,但此功能使库作者可

2023-03-11

for PathBuf Other changes  其他改动 Rust 中的 Android 平台支持现在以 NDK r25 为目标,这对应于支持的最低 API 级别 19 (KitKat)。 查看 Rust 、 Cargo和Clippy中发生的所有变化。   更新公告:https://blog.rust-lang.org/2023/03/09/Rust-1.68.0.ht

2022-10-12

式发布,一些改进内容包括: 审计插件:审计插件的日志轮换函数audit_log_rotate(),简化了日志轮换的工作,用户无需手动更改日志名称,也无需设置audit_log_flush = ON。 组件服务:启用了新的组件服务,支持服务器组件和要

2023-04-18

码库,而不是拒绝由于之前存在的代码库。 增加了跟踪日志中的调试输出。 不完全下载:在下载完成之前使用临时目录,从而避免部分下载问题。 诊断 归档不再提供生命周期事件作为数据源,仅提供“检查”和“日志