Rust日志记录库paris-log的使用,paris-log提供简洁高效的日志输出功能

Rust日志记录库paris-log的使用,paris-log提供简洁高效的日志输出功能

paris-log是一个允许你将paris的格式化功能与log crate结合的库。

使用方法

Cargo.toml中添加以下依赖:

[dependencies]
paris-log = "1"

不使用log的宏:

use log::{info, error, ...};

可以使用paris-log的宏:

use paris_log::{info, error, ...};

现在你可以使用paris的格式化功能:

info!("This <cyan>is <bright green>a log</>! <green><tick></>");

如果只需要偶尔使用paris的格式化功能,可以使用完整路径(例如paris_log::info)。

paris-log的宏应该可以像log宏一样使用;可以像平常一样使用格式化说明符。但它们目前不支持手动指定日志目标。如果需要这个功能,可以提交issue或PR!此外,paris-log没有log crate中的log宏,因为这看起来是重复的。

注意

必须使用一个日志实现与这个crate一起使用,因为paris-log内部使用了log crate。如果不需要log crate和日志实现提供的额外功能,可以考虑使用paris本身。

icons功能

如果使用过paris,可能注意到日志前面有一个漂亮的图标来表明它是info、error、warn还是success。如果启用icons功能,paris-log可以自动添加这些图标:

[dependencies]
paris-log = { version = "1", features = ["icons"] }
info!("This <cyan>is <bright green>a log</>!");
// 没有`icons`功能: This is a log!
// 有`icons`功能: ℹ This is a log!

图标只会添加到errorwarninfo宏中。这个功能还添加了success宏,以实现与paris的功能对等。(success宏使用info日志级别)

完整示例代码

下面是内容中提供的示例代码:

// 添加依赖后,在Cargo.toml中:
// [dependencies]
// paris-log = { version = "1", features = ["icons"] }

// 示例代码
use paris_log::{info, error, warn, success};
use log::LevelFilter;
use simple_logger::SimpleLogger;

fn main() {
    // 初始化日志实现
    SimpleLogger::new()
        .with_level(LevelFilter::Info)
        .init()
        .unwrap();

    // 使用带颜色格式的日志
    info!("This is <blue>a colored</> info message!");
    
    // 使用图标功能
    warn!("This is a warning message with icon");
    
    // 错误日志
    error!("This is an <red>error</> message");
    
    // 成功日志(需要icons功能)
    success!("Operation completed successfully!");
    
    // 使用格式化参数
    let count = 5;
    info!("Processing {} items", count);
}

这个示例展示了:

  1. 如何初始化日志实现
  2. 使用不同日志级别
  3. 使用颜色格式化
  4. 使用图标功能
  5. 结合常规格式化参数

要运行这个示例,还需要在Cargo.toml中添加:

[dependencies]
simple_logger = "2.0"  # 或其他日志实现

完整示例demo

// Cargo.toml 需要包含:
// [dependencies]
// paris-log = { version = "1", features = ["icons"] }
// simple_logger = "2.0"

use paris_log::{info, error, warn, success};
use log::LevelFilter;
use simple_logger::SimpleLogger;

fn main() {
    // 初始化日志实现,设置日志级别为Info
    SimpleLogger::new()
        .with_level(LevelFilter::Info)
        .init()
        .unwrap();

    // 演示不同日志级别的消息
    info!("<blue>欢迎</>使用paris-log日志系统");
    
    // 带格式化参数的消息
    let user = "张三";
    info!("用户 <green>{}</> 已登录", user);
    
    // 警告消息
    warn!("<yellow>警告</>: 磁盘空间即将用尽");
    
    // 错误消息
    error!("<red>错误</>: 无法连接到数据库");
    
    // 成功消息(需要icons功能)
    success!("数据保存成功!");
    
    // 复杂格式的消息
    let items = vec!["苹果", "香蕉", "橙子"];
    info!("购物车中有 <magenta>{}</> 件商品: <cyan>{:?}</>", items.len(), items);
    
    // 带图标的debug消息(不会显示,因为日志级别设置为Info)
    paris_log::debug!("这条消息不会显示");
}

这个完整示例演示了:

  1. 如何初始化paris-log
  2. 使用不同日志级别(info, warn, error, success)
  3. 结合颜色格式化和常规格式化
  4. 使用格式化参数
  5. 日志级别过滤功能
  6. 图标功能的使用

输出结果会根据是否启用icons功能而有所不同,但通常包含彩色文本和相应的图标(如果启用icons功能)。


1 回复

Rust日志记录库paris-log的使用指南

paris-log是一个简洁高效的Rust日志记录库,提供了直观的API和美观的输出格式,特别适合需要彩色日志输出的CLI应用程序。

主要特性

  • 简洁的API设计
  • 内置彩色输出
  • 支持不同日志级别
  • 轻量级,无额外依赖

安装

在Cargo.toml中添加依赖:

[dependencies]
paris-log = "1.0"

基本使用方法

use paris_log::{info, warn, error, success, Logger};

fn main() {
    // 最简单的日志输出
    info!("这是一条普通信息日志");
    warn!("这是一条警告日志");
    error!("这是一条错误日志");
    success!("这是一条成功日志");
    
    // 带格式化的日志
    let count = 5;
    info!("处理了 {} 个项目", count);
    
    // 使用Logger实例
    let mut logger = Logger::new();
    logger.info("使用Logger实例输出信息");
    logger.warn("这是一条警告");
    logger.error("出错了!");
    logger.success("操作成功完成");
    
    // 添加自定义图标
    logger.info("</> 带图标的日志消息");
}

高级功能

日志级别控制

use paris_log::{Logger, Level};

fn main() {
    let mut logger = Logger::new();
    
    // 设置日志级别
    logger.level(Level::WARN);
    
    // 只有WARN及以上级别的日志会显示
    logger.info("这条不会显示");  // 被过滤
    logger.warn("这条会显示");
}

组合消息

use paris_log::Logger;

fn main() {
    let mut logger = Logger::new();
    
    logger
        .info("开始处理")
        .indent(1)  // 缩进1级
        .info("处理步骤1")
        .info("处理步骤2")
        .indent(2)  // 再缩进2级(总共3级)
        .warn("需要注意的事项")
        .indent(-3) // 回到顶级
        .success("处理完成");
}

自定义格式

use paris_log::{Logger, styles};

fn main() {
    let mut logger = Logger::new();
    
    // 自定义格式
    logger.custom(
        "<blue>[自定义]</>",  // 前缀
        "这是一条自定义格式的消息",  // 消息
        Some(styles::red)  // 颜色样式
    );
}

输出示例

paris-log的典型输出如下:

ℹ️ 这是一条普通信息日志
⚠️ 这是一条警告日志
❌ 这是一条错误日志
✓ 这是一条成功日志
ℹ️ 处理了 5 个项目
</> 带图标的日志消息

性能建议

paris-log设计时就考虑了性能,但以下建议可以进一步优化:

  1. 在生产环境中考虑适当提高日志级别,减少不必要的日志输出
  2. 对于频繁调用的日志点,可以使用log!宏进行条件编译

paris-log特别适合开发工具、CLI应用和需要直观日志显示的场合,它的简洁API和美观输出可以显著提升开发体验。

完整示例demo

use paris_log::{info, warn, error, success, Logger, Level, styles};

fn main() {
    // 基本日志输出示例
    println!("=== 基本日志输出 ===");
    info!("应用程序启动");
    warn!("磁盘空间不足警告");
    error!("文件读取失败");
    success!("数据保存成功");
    
    // 带变量的日志
    let user_count = 42;
    info!("当前在线用户数: {}", user_count);
    
    // Logger实例使用示例
    println!("\n=== Logger实例使用 ===");
    let mut logger = Logger::new();
    logger.info("初始化日志系统");
    logger.warn("检测到配置问题");
    logger.error("数据库连接失败");
    logger.success("服务启动完成");
    
    // 日志级别控制示例
    println!("\n=== 日志级别控制 ===");
    let mut level_logger = Logger::new();
    level_logger.level(Level::WARN);
    level_logger.info("这条INFO日志不会显示"); // 被过滤
    level_logger.warn("这条WARN日志会显示");
    level_logger.error("这条ERROR日志会显示");
    
    // 组合消息示例
    println!("\n=== 组合消息 ===");
    let mut combo_logger = Logger::new();
    combo_logger
        .info("开始处理任务")
        .indent(1)
        .info("步骤1: 读取输入文件")
        .info("步骤2: 处理数据")
        .indent(1)
        .warn("数据校验警告: 发现空值")
        .indent(-2)
        .success("任务处理完成");
    
    // 自定义格式示例
    println!("\n=== 自定义格式 ===");
    let mut custom_logger = Logger::new();
    custom_logger.custom(
        "<magenta>[系统]</>",
        "这是一条自定义颜色的系统消息",
        Some(styles::magenta)
    );
    custom_logger.custom(
        "<green>[成功]</>",
        "操作执行成功",
        Some(styles::green)
    );
}

运行上述完整示例后,您将看到类似以下的彩色输出:

=== 基本日志输出 ===
ℹ️ 应用程序启动
⚠️ 磁盘空间不足警告
❌ 文件读取失败
✓ 数据保存成功
ℹ️ 当前在线用户数: 42

=== Logger实例使用 ===
ℹ️ 初始化日志系统
⚠️ 检测到配置问题
❌ 数据库连接失败
✓ 服务启动完成

=== 日志级别控制 ===
⚠️ 这条WARN日志会显示
❌ 这条ERROR日志会显示

=== 组合消息 ===
ℹ️ 开始处理任务
  ℹ️ 步骤1: 读取输入文件
  ℹ️ 步骤2: 处理数据
    ⚠️ 数据校验警告: 发现空值
✓ 任务处理完成

=== 自定义格式 ===
[系统] 这是一条自定义颜色的系统消息
[成功] 操作执行成功
回到顶部