Rust中env_logger日志库的使用
介绍
env_logger通过配置环境变量中的RUST_LOG
变量来实现日志过滤,它是一个简单的日志库的实现。不能将日志输出到文件中
示例
最小化使用
use std::env::set_var;
use env_logger;
fn main() {
// 设置全局日志过滤等级
set_var("RUST_LOG", "info");
// 初始化日志库,不可缺少
env_logger::init();
// 输出日志
log::debug!("Hello, world!"); // 这一行不会被输出
log::info!("Hello, world!");
log::warn!("Hello, world!");
log::error!("Hello, world!");
}
/* 输出:
[2024-03-08T13:56:46Z INFO test01] Hello, world!
[2024-03-08T13:56:46Z WARN test01] Hello, world!
[2024-03-08T13:56:46Z ERROR test01] Hello, world!
*/
自定义日志输出格式
从env_logger 0.7版本开始,可以使用Builder
来自定义日志的输出格式,可以通过编程的方式设置一个闭包来定义如何格式化和输出日志记录
use std::env::set_var;
use std::io::Write;
use env_logger;
use log::LevelFilter;
fn main() {
// 设置全局日志过滤等级
set_var("RUST_LOG", "info");
env_logger::Builder::new().format(
|buf, record| {
writeln!(buf,
"{} | {:5.8} | {}:{} - {}",
chrono::Local::now().format("%Y-%m-%d %H:%M:%S"),
record.level(),
record.file().unwrap_or("unknown"),
record.line().unwrap(),
record.args()
)
}
).filter(None, LevelFilter::Info).init();
// 输出日志
log::debug!("Hello, world!");
log::info!("Hello, world!");
log::warn!("Hello, world!");
log::error!("Hello, world!");
}
/* 输出:
2024-03-08 22:14:36 | INFO | src\main.rs:24 - Hello, world!
2024-03-08 22:14:36 | WARN | src\main.rs:25 - Hello, world!
2024-03-08 22:14:36 | ERROR | src\main.rs:26 - Hello, world!
*/
需要注意的是,按照上述方式自定义输出格式后,原有的输出中的颜色信息将会丢失。
评论区