18 releases
| 0.2.2 | Aug 27, 2025 |
|---|---|
| 0.2.1 | Apr 6, 2025 |
| 0.1.14 | Nov 20, 2024 |
| 0.1.13 | Oct 25, 2024 |
| 0.1.7 | Jun 12, 2023 |
#199 in Compression
1,419 downloads per month
Used in 2 crates
90KB
423 lines
log2
log2 is an out-of-the-box logging library for Rust. It writes to stdout or to file asynchronousely,
and automatically rotates based on file size.
Usage
Add dependency
cargo add log2
Log to stdout
Simple to start.
use log2::*;
fn main() {
let _log2 = log2::start();
trace!("send order request to server");
debug!("receive order response");
info!("order was executed");
warn!("network speed is slow");
error!("network connection was broken");
}
Output
Hide module path, and set log level.
use log2::*;
fn main() {
let _log2 = log2::stdout()
.module(false)
.level("info")
.start();
trace!("send order request to server");
debug!("receive order response");
info!("order was executed");
warn!("network speed is slow");
error!("network connection was broken");
}
Log to file
log2 with default file size 100MB, max file count 10, you can change as you like. Note the _log2 will
stop the log2 instance when it is out of the scope.
use log2::*;
fn main() {
// configurable way:
// - log to file, file size: 100 MB, rotate: 20
// - tee to stdout
// - show module path, default is true
// - show module line, default is false
// - filter with matched module
// - enable gzip compression for aged file
// - custom fomatter support
let _log2 = log2::open("log.txt")
.size(100*1024*1024)
.rotate(20)
.tee(true)
.module(true)
.module_with_line(true)
.module_filter(|module| module.contains(""))
.compress(false)
.format(|record, tee| format!("[{}] [{}] {}\n", chrono::Local::now(), record.level(), record.args()))
.start();
// out-of-the-box way
// let _log2 = log2::open("log.txt").start();
trace!("send order request to server");
debug!("receive order response");
info!("order was executed");
warn!("network speed is slow");
error!("network connection was broken");
}
Output files
log.txt
log.1.txt
log.2.txt
log.3.txt
log.4.txt
log.5.txt
log.6.txt
log.7.txt
log.8.txt
log.9.txt
Output compressed files
log.txt
log.1.txt.gz
log.2.txt.gz
log.3.txt.gz
log.4.txt.gz
log.5.txt.gz
log.6.txt.gz
log.7.txt.gz
log.8.txt.gz
log.9.txt.gz
Dependencies
~1–12MB
~76K SLoC