log4you

Crates.iolog4you
lib.rslog4you
version0.1.4
sourcesrc
created_at2025-04-16 08:17:07.661713+00
updated_at2025-05-31 13:23:06.715214+00
descriptionStructured logging for Rust with dynamic UUID log IDs, built on log4rs.
homepage
repositoryhttps://github.com/jerry-maheswara-github/log4you
max_upload_size
id1636125
size58,150
Jerry Maheswara (jerry-maheswara-github)

documentation

https://docs.rs/log4you

README

log4you

Structured logging for Rust with dynamic UUID log IDs, built on log4rs.

log4you is a lightweight logging crate, designed for applications that need consistent, structured logging with unique log identifiers (UUIDs). It allows simple, efficient, and consistent logging with unique log IDs for each request.


โœจ Features

  • ๐Ÿ”ง Powered by log4rs, configure logging dynamically with YAML configuration files, compatible with the standard Rust log facade
  • โœ… Structured logging with automatic UUID log IDs
  • ๐Ÿ†” Generates a unique log_id (UUID v7) per log entry using Uuid::now_v7().simple() via log_id! macro
  • ๐Ÿช„ Easy-to-use macros: log_info!, log_error!, etc.
  • ๐Ÿ› ๏ธ Supports dynamic config paths, log rotation, and file size management
  • ๐Ÿš€ Easy setup and integration โ€” works out of the box
  • ๐Ÿงต Great for async or multithreaded apps

Perfect for microservices, APIs, and any system where traceability and clean logs matter.


โš™๏ธ Example YAML Configuration

See the log4rs configuration documentation for more details.

appenders:
  stdout:
    kind: console
    encoder:
      pattern: "[{d(%Y-%m-%dT%H:%M:%S%.6f)} {h({l})} {f}:{L}] - {m}{n}"

  log4you:
    kind: rolling_file
    path: "logs/log4you.log"
    policy:
      kind: compound
      trigger:
        kind: size
        limit: 100MB
      roller:
        kind: fixed_window
        pattern: "logs/log4you-{}.log"
        count: 5
    encoder:
      pattern: "[{d(%Y-%m-%dT%H:%M:%S%.6f)} {h({l})} {f}:{L}] - {m}{n}"

root:
  level: info
  appenders:
    - stdout

loggers:
  log4you:
    level: debug
    appenders:
      - log4you

๐Ÿ› ๏ธ Usage Example

use log4you::{logger::Logger, log_id, log_info, log_info_with_id};

fn main() {
    let logid = log_id!();
    // Initialize the logger with a log_id, a path to the YAML config, and the service name
    Logger::init(&logid,  Some("config/log4you.yaml"), Some("log4you"));

    // Log an info message, logid will be generated automatically
    log_info!("Service started");

    // Log an info message, logid is defined by yourself
    let custom_log_id = log_id!();
    log_info_with_id!(custom_log_id, "This log uses custom log_id");
}

๐Ÿ“œ License

Licensed under:

  • Apache License, Version 2.0 LICENSE

๐Ÿง‘โ€๐Ÿ’ป Author

Created and maintained by Jerry Maheswara

Feel free to reach out for suggestions, issues, or improvements!


โค๏ธ Built with Love in Rust

This project is built with โค๏ธ using Rust โ€” a systems programming language that is safe, fast, and concurrent. Rust is the perfect choice for building reliable and efficient applications.


๐Ÿ‘‹ Contributing

Pull requests, issues, and feedback are welcome!
If you find this crate useful, give it a โญ and share it with others in the Rust community.


Commit count: 0

cargo fmt