介紹 env_logger 配合 log 庫使用, log 是rust日誌庫的外觀庫,給日誌庫提供抽象的記錄介面, log使用巨集,如info!() trace!()記錄日誌 假如需要替換當前使用的日誌庫,只需將初始化相關的代碼和toml文件修改 env_logger 通過配置環境變數中 RUST_L ...
介紹
env_logger
配合 log
庫使用,
log
是rust日誌庫的外觀庫,給日誌庫提供抽象的記錄介面,
log
使用巨集,如info!() trace!()
記錄日誌
假如需要替換當前使用的日誌庫,只需將初始化相關的代碼和toml
文件修改
env_logger
通過配置環境變數中 RUST_LOG
實現日誌過濾
實踐
Cargo.toml
[dependencies]
log = "0.4"
env_logger = "0.9"
main.rs
use std::env::set_var;
use log::{debug, error, log_enabled, info, Level};
fn main() {
set_var("RUST_LOG", "debug");
env_logger.init();
//env_logger::builder().format_timestamp(None).init();
debug!("this is a debug {}", "message");
error!("this is printed by default");
if log_enabled!(Level::Info) {
let x = 3 * 4; // expensive computation
info!("the answer was: {}", x);
}
}
過濾規則
set_var
配置環境變數 RUST_LOG
的過濾規則
-
過濾日誌等級(debug,error...)
set_var("RUST_LOG", "debug");
-
過濾哪個文件的日誌(工程名::模塊::文件名=level),
.\baseframe\ |-- Cargo.lock |-- Cargo.toml |-- diesel.toml `-- src |-- main.rs `-- module |-- mod.rs `-- test.rs
列印test文件輸出的所有等級的日誌
set_var("RUST_LOG", "baseframe::module::test");
列印全局 error 日誌和 test 中 info 等級以上的日誌
set_var("RUST_LOG", "error,baseframe::module::test=info");
-
正則表達式過濾日誌
set_var("RUST_LOG", "/正則表達式");
列印包含"include"的日誌
set_var("RUST_LOG", /include");
過濾全局 error 日誌和 test 中 info 等級以上的日誌,列印包含include的日誌
set_var("RUST_LOG", "error,baseframe::module::test=info/include");