< 返回版块

codecrafter 发表于 2024-08-26 17:06

Tags:logging,log,Debugging

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

  1. 项目地址
  2. 《tklog与log4rs 的基准测试》

核心特点

  • 高性能同步与异步日志记录:tklog 支持高效的同步与异步日志记录,确保即使在高负载环境下也能保持良好的性能。
  • 灵活的日志格式定制:用户可以根据需要自定义日志输出格式,包括日志级别、时间戳格式等。
  • 智能日志文件管理:支持按时间或文件大小自动分割日志文件,以及文件数量的滚动管理,有助于维持日志目录的整洁。
  • 日志压缩与备份:支持对日志文件进行压缩归档,方便长期存储和备份。
  • 官方标准 API 兼容:与 Rust 官方日志库标准 API 兼容,便于集成使用。
  • 模块级配置:允许在不同的模块中独立设置日志参数,增强了灵活性。

0.1.0 版本更新

tklog 支持日志级别设置独立日志格式参数
tklog 通过 set_level_option() 设置日志级别的独立日志参数
示例
#[test]
fn testlog() {
    //将Info级别的日志格式设置为 Format::LevelFlag
    //将Fatal级别的日志格式设置为 Format::LevelFlag | Format::Date
    LOG.set_level_option(LEVEL::Info, LevelOption { format: Some(Format::LevelFlag), formatter: None })
    .set_level_option(LEVEL::Fatal, LevelOption { format: Some(Format::LevelFlag | Format::Date), formatter: None});

    trace!("this is trace log");
    debug!("this is debug log");
    info!("this is info log");
    warn!("this is warn log");
    error!("this is error log");
    fatal!("this is fatal log");
    thread::sleep(Duration::from_secs(1))
}
执行结果
---- testlog stdout ----
[DEBUG] 2024-08-24 15:06:02 test_0100.rs 17:this is debug log
[INFO] this is info log
[WARN] 2024-08-24 15:06:02 test_0100.rs 19:this is warn log
[ERROR] 2024-08-24 15:06:02 test_0100.rs 20:this is error log
[FATAL] 2024-08-24 this is fatal log

tklog 快速使用

添加依赖

  [dependencies]
  tklog = "0.1.0"  #   "0.x.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

评论区

写评论
作者 codecrafter 2024-08-28 10:04

作者邮箱是 donnie4w@gmail.com

--
👇
Chacix: 作者有联系方式吗?想联系您

Chacix 2024-08-27 20:04

作者有联系方式吗?想联系您

作者 codecrafter 2024-08-27 10:41

tklog没有事件追踪的功能,是一个传统日志库。它的同步与异步是用不同的宏区分开的:如

  • 同步(trace! ,debug! info! warn! error! fatal!
  • 异步(async_trace! ,async_debug! async_info! async_warn! async_error! async_fatal!

如果用标准库,可以分别启用同步或异步,如

  • 同步 tklog::LOG.uselog()
    • log::info!("this is a info sync log");
  • 异步 tklog::ASYNC_LOG.uselog()
    • log::info!("this is a info async log");

--
👇
shenjackyuanjie: 欸? 有类似 tracing 的 event! 类似物吗( 以及异步这块会不会混(

shenjackyuanjie 2024-08-27 00:48

欸? 有类似 tracing 的 event! 类似物吗( 以及异步这块会不会混(

1 共 4 条评论, 1 页