#log #logging #text #testing #utility #date-time

plog

为 Rust 程序编写的模块化美观日志记录器

19 个版本

0.2.16 2022 年 11 月 5 日
0.2.15 2022 年 11 月 5 日
0.2.13 2022 年 6 月 9 日
0.2.12 2022 年 5 月 1 日
0.1.2 2022 年 3 月 27 日

#312调试 类别中

每月 37 次下载

MIT 许可证

20KB
330

plog

为 Rust 程序编写的美观日志记录器。

一个使用宏来记录应用程序的库,初始包含五个级别:debug!info!ok!warn!error!,每个都作为宏分发

use plog::{info, ok};
use std::{thread, time::Duration};

fn main() {
    let threads: Vec<_> = (0..=10)
        .map(|id| {
            info!("Creating thread {id}");
            thread::spawn(move || {
                thread::sleep(Duration::from_millis(1000));
                ok!("Thread {id} terminated");
            })
        })
        .collect();
        
    threads.into_iter().for_each(|thr| thr.join().unwrap());
}

特性

由于专注于优化,lib 中的每个功能(除日志宏外)都通过特性提供。Plog 包含以下特性

特性 描述 附加依赖 原因
local_date 在日志中包含本地日期,格式为 %Y-%M-%D chrono (分支 time-0.3) 获取本地日期信息和格式
local_time 类似于 local_date,但使用 %H:%M:%S 记录时间 chrono (分支 time-0.3) 获取本地时间信息和格式
context 包含请求日志的行和文件
colored 使用转义序列打印样式文本 crossterm Crossplatform 转义序列解析器
persistent 添加由 LOG_FILEPATH 环境变量处理的持久日志,将每个日志保存到指定的文件中 parking_lot (直到 0.2.14) const_mutex 用于稳定 Rust 和优化
impls 实现了对 logshow_<variant> 的支持,用于 Option<T>Result<T, U>

计划

  • 将日期和时间拆分为两个特征
  • 将日志方法包含到 OptionResult
  • 优化代码可读性
  • 包含基准测试
  • 创建文档

依赖关系

~0–8MB
~50K SLoC