pub mod color;
pub mod error;
pub mod level;
pub mod logger;
pub mod opts;
pub mod out;
pub mod output;
pub mod timestamp;
pub use color::{Color, ColorAttribute, Colors};
pub use error::{Result, TwygError};
pub use level::LogLevel;
pub use logger::Logger;
pub use opts::{Opts, OptsBuilder, PadSide};
pub use out::{STDERR, STDOUT};
pub use output::Output;
pub use timestamp::TSFormat;
pub fn setup(opts: Opts) -> Result<Logger> {
let l = Logger::new(opts);
l.dispatch()?;
Ok(l)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_setup_success() {
let opts = Opts::default();
let logger = Logger::new(opts.clone());
assert_eq!(logger.level(), opts.level());
}
#[test]
fn test_setup_dispatch_error_invalid_file_path() {
let opts = OptsBuilder::new()
.output(Output::file(
"/proc/invalid/path/that/cannot/exist/test.log",
))
.build()
.unwrap();
let logger = Logger::new(opts);
assert_eq!(logger.level(), LogLevel::default());
}
#[test]
fn test_setup_dispatch_error_no_permission() {
let opts = OptsBuilder::new()
.output(Output::file("/root/twyg-test-no-permission.log"))
.build()
.unwrap();
let logger = Logger::new(opts);
assert_eq!(logger.level(), LogLevel::default());
}
}