rf_logger/
lib.rs

1
2//! A simple logger that can log to stdout, stderr and rotated files, for use
3//! with the logging facade exposed by the [`log` crate][log-crate-url].
4//! 
5//! ## Example
6//! 
7//! ```
8//! use log::{LevelFilter, info};
9//! use rf_logger;
10//! 
11//!	rf_logger::Builder::new()
12//!		.max_level(LevelFilter::Debug)
13//!		.stdout()
14//!		.rotated_file("tests/demo.log", 5 * 1024, 3)
15//!		.init();
16//!	
17//!	info!("Hello, rf_logger");
18//!	info!("Bye");
19//! ```
20//! 
21//! ## Enabling logging
22//!
23//! Log levels are controlled on a per-module basis, and **by default all
24//! logging is disabled except for the `error` level**.
25//!
26//! Log levels should be set by `Builder::max_level()`
27//! 
28//! ## Formatting
29//! 
30//! Time formatting string can be set via `Builder::time_fmt()` while other
31//! parts are fixed.
32//! 
33//! ```text
34//! let _ = writeln!(
35//! 	buf,
36//! 	"{} - {} - {}",
37//!		now.format(&self.time_fmt),
38//! 	record.level(),
39//! 	record.args()
40//! );
41//! ```
42//! 
43//! ## Notes
44//! 
45//! There is a mutex lock during every log record beening handled,
46//! if performance is what your concern this crate may not be a good choice.
47//! 
48//! [log-crate-url]: https://docs.rs/log/
49
50mod logger;
51mod targets;
52
53pub use logger::Builder;
54
55#[cfg(test)]
56mod tests {
57	use super::*;
58
59	#[test]
60	fn all() {
61		Builder::new()
62			.max_level(log::LevelFilter::Debug)
63			.stdout()
64			.rotated_file("tests/test.log", 5 * 1024, 3)
65			.init();
66
67		log::info!("Hello, rf_logger");
68		log::info!("Bye");
69	}
70}