3 releases
Uses new Rust 2024
new 0.1.2 | May 2, 2025 |
---|---|
0.1.1 | Apr 16, 2025 |
0.1.0 | Apr 16, 2025 |
#293 in Debugging
373 downloads per month
24KB
136 lines
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 Rustlog
facade - ✅ Structured logging with automatic UUID log IDs
- 🆔 Generates a unique
log_id
(UUID v7) per log entry - 🪄 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 multi-threaded apps
Perfect for microservices, APIs, and any system where traceability and clean logs matter.
📦 Installation
Add log4you
to your Cargo.toml
:
[dependencies]
log4you = "0.1.1"
Or, use cargo-edit to add it directly from your terminal:
cargo add log4you
⚙️ 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");
}
Author
Jerry Maheswara jerrymaheswara@gmail.com
📖 License
This project is licensed under the Apache-2.0 license.
Built with ❤️ in Rust
Changelog
v0.1.2
- Re-export
log
as__log_crate
to support internal macro resolution without requiring users to depend onlog
explicitly. - Re-export
uuid
as__uuid_crate
for similar internal macro usage convenience.
Dependencies
~2.5MB
~54K SLoC