Skip to main content

Crate init_log4rs

Crate init_log4rs 

Source
Expand description

§init-log4rs

A utility crate that simplifies log4rs initialization for Rust applications. It automatically searches for a log4rs configuration file in multiple directories, and creates one if not found.

§Features

  • Auto-discovery: Searches for log4rs.yaml configuration file in multiple directories:

    • Executable directory
    • Current working directory (in logs subdirectory)
    • Parent directory (in logs subdirectory)
    • User’s home directory (in logs subdirectory)
    • System temporary directory
  • Auto-creation: If no configuration file is found, automatically creates a new one with sensible defaults including:

    • Console output (stdout and stderr)
    • Rolling file appender with size-based rotation (10 MB limit)
    • Fixed window rollover pattern (keeps up to 20 archived logs)
    • Configurable log format: {date} {level} {module}:{line} - {message}
  • Hot-reload ready: Configuration file can be set to refresh every 30 seconds for dynamic log level changes

§Installation

Add this to your Cargo.toml:

[dependencies]
init-log4rs = "1.0"
log = "0.4"

§Usage

use init_log4rs;
use log::{info, debug, error};

fn main() -> anyhow::Result<()> {
    // Initialize log4rs with configuration file name and log file base name
    init_log4rs::init_log4rs("log4rs.yaml", "app_log")?;

    // Now you can use the log macros
    info!("Application started");
    debug!("Debug information");
    error!("Error occurred");

    Ok(())
}

§Parameters

  • log_cfg_yaml: The name of the log4rs configuration file (e.g., "log4rs.yaml")
  • log_stem: The base name for the log file without extension (e.g., "app_log" will create app_log.log)

§Generated Configuration

When no configuration file is found, the crate creates a YAML configuration with the following structure:

appenders:
  stdout:
    kind: console

  stderr:
    kind: console
    target: stderr

  rolling_file:
    kind: rolling_file
    path: <path>/app_log.log
    append: true
    encoder:
      pattern: '{d} {l} {M}:{L} - {m}{n}'
    policy:
      kind: compound
      trigger:
        kind: size
        limit: 10 mb
      roller:
        kind: fixed_window
        pattern: <path>/app_log.log.{}
        base: 1
        count: 20

root:
  level: info
  appenders:
    - rolling_file

Enums§

InitLog4rsError

Functions§

init_log4rs
Try to load configuration file from following directories or create new.