log — Rust 日志库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Rust 的 log 库?

log 库是 Rust 生态系统中用于日志记录的标准抽象层。它提供了一个轻量级的门面(facade),允许开发者编写生成日志的代码,而不必绑定到特定的日志记录器实现(例如 env_logger、simple_logger 或 slog)。这类似于 Python 中流行的 logging 库,但更注重性能和内存安全。

为什么需要 log 库?

log 的主要目标是分离日志的生成与处理。您可以在代码中使用 info!、warn!、error! 等宏,之后通过接入某个后端(例如 env_logger),将输出重定向到控制台、文件或监控系统。这对于以下场景尤其有用:

  • 调试复杂系统
  • 监控生产环境应用
  • 创建不应强制用户指定日志记录方式的库

安装

在 Cargo.toml 中添加:

[dependencies]log = "0.4"env_logger = "0.10"  # 用于控制台输出

然后执行 cargo build。

主要功能

  • 日志宏: error!、warn!、info!、debug!、trace! — 支持类似 println! 的字符串格式化。
  • 级别过滤: 可通过环境变量 RUST_LOG 设置最低日志级别(例如仅显示错误)。
  • 可扩展性: 通过 Log trait 支持自定义日志记录器。
  • 安全性: 当日志级别被禁用时,不会影响性能。

Rust 代码示例

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

fn main() { // 初始化日志记录器 (env_logger) env_logger::init();

let user = "Alice"; let status = 200;

info!("用户 {} 已登录系统", user); warn!("响应状态: {} — 可能是过期的缓存", status); error!("无法连接到数据库: {}", "timeout");}

使用 RUST_LOG=info cargo run 运行,即可看到所有 info 级别及以上的消息。

何时使用

log 库非常适合以下场景:

  • 任何需要标准日志系统的 Rust 应用(CLI、服务器、工具)。
  • 库的开发——让用户自行选择后端。
  • 从 Python 迁移的项目:其概念类似于 logging.getLogger()。

如果您需要异步写入文件或结构化的 JSON 日志,请避免使用 log——这种情况下 tracing 或 slog 更合适。

推荐