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(); }