在 Debian 上配置 Rust 日志的完整实践
一 最简方案 env_logger 输出到控制台
[dependencies]
log = "0.4"
env_logger = "0.10"
use log::{info, error};
fn main() {
// 读取环境变量 RUST_LOG,未设置时默认 info
env_logger::Builder::from_env(
env_logger::Env::default().default_filter_or("info")
).init();
info!("应用启动");
error!("发生错误");
}
RUST_LOG=debug cargo run
RUST_LOG=info,mycrate=debug。该方案适合绝大多数命令行与开发场景。二 作为 systemd 服务运行并查看日志
cargo build --release
[Unit]
Description=My Rust App
After=network.target
[Service]
User=www-data
Group=www-data
ExecStart=/path/to/target/release/myapp
Restart=always
Environment=RUST_LOG=info
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service
sudo journalctl -u myapp.service -f
三 写入文件并按天滚动 log4rs
[dependencies]
log = "0.4"
log4rs = "1.0"
refresh_rate: 30 seconds
appenders:
stdout:
kind: console
file:
kind: rolling_file
path: "log/app.log"
encoder:
pattern: "{d} - {l} - {m}{n}"
roller:
kind: time
pattern: "%Y-%m-%d"
count: 7
root:
level: info
appenders:
- stdout
- file
use log::info;
use log4rs;
fn main() {
log4rs::init_file("log4rs.yaml", Default::default()).unwrap();
info!("服务已启动");
}
四 进阶选择与其他日志库