From 5b59ba3aee3e874b2e67cf529680d19910a3ec7d Mon Sep 17 00:00:00 2001 From: Ben Morrison Date: Tue, 27 Aug 2019 01:10:51 -0400 Subject: db connected, logging up --- src/logging.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/logging.rs (limited to 'src/logging.rs') diff --git a/src/logging.rs b/src/logging.rs new file mode 100644 index 0000000..332de6c --- /dev/null +++ b/src/logging.rs @@ -0,0 +1,48 @@ +use std::fs; +use std::fs::File; + +use chrono::offset::Utc; +use simplelog::*; + +pub const FILE: &str = "/tmp/clinte.log"; + +pub fn init() { + // If the log file exists on startup, + // move and timestamp it so we get a + // fresh log file. + if fs::metadata(FILE).is_ok() { + let mut newpath = FILE.to_string(); + let time = Utc::now().to_rfc3339(); + newpath.push_str("."); + newpath.push_str(&time); + fs::rename(FILE, newpath).unwrap(); + } + + CombinedLogger::init(vec![ + TermLogger::new(LevelFilter::Warn, Config::default(), TerminalMode::Stderr).unwrap(), + WriteLogger::new( + LevelFilter::Info, + Config::default(), + File::create(FILE).unwrap(), + ), + ]) + .expect("Unable to initialize logging"); +} + +#[cfg(test)] +mod tests { + use super::*; + + use log::info; + + #[test] + fn init_logs() { + let blank = " ".bytes().collect::>(); + fs::write("/tmp/dirtmud.log", &blank).unwrap(); + init(); + + info!("TEST LOG MESSAGE"); + let logfile = fs::read_to_string("/tmp/dirtmud.log").unwrap(); + assert!(logfile.contains("TEST LOG MESSAGE")); + } +} -- cgit 1.4.1-2-gfad0