env_logger with Builder
Using the env_logger::Builder we can define the formatting of each log-line.
We can also set the default log-level, if the user does not set one via the RUST_LOG environment variable.
[package]
name = "env-logger-builder"
version = "0.1.0"
edition = "2024"
[dependencies]
chrono = "0.4.40"
env_logger = "0.11.8"
log = "0.4.27"
use std::io::Write;
use std::env;
use env_logger::Builder;
use chrono::Local;
fn main() {
init_logger();
log::trace!("This is a sample trace.");
log::debug!("This is a sample debug.");
log::info!("This is a sample info.");
log::warn!("This is a sample warn.");
log::error!("This is a sample error.");
}
fn init_logger() {
let mut builder = Builder::new();
builder.format(|formatter, record| {
writeln!(
formatter,
"{} [{}] ({}): {}",
Local::now().format("%Y-%m-%d %H:%M:%S"),
record.level(),
record.target(),
record.args()
)
});
let log_level = env::var("RUST_LOG").unwrap_or(String::from("info"));
builder.parse_filters(&log_level);
builder.init();
}