Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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