aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil Queseth <eskilq@kth.se>2020-10-18 01:10:36 +0200
committerEskil Queseth <eskilq@kth.se>2020-10-18 01:10:36 +0200
commit2c87ed814f27ef8d58a4260be79710ed85c28bfe (patch)
tree8e6a1ee4f441c0945c3713ff4050455921a1bd27
parentccc5f76133460d055a5d90ae9cd0a7bc2a83551d (diff)
downloadmum-2c87ed814f27ef8d58a4260be79710ed85c28bfe.tar.gz
add support for file logging
-rw-r--r--mumctl/src/main.rs2
-rw-r--r--mumd/src/main.rs2
-rw-r--r--mumlib/src/lib.rs28
3 files changed, 21 insertions, 11 deletions
diff --git a/mumctl/src/main.rs b/mumctl/src/main.rs
index 2473195..63e3a49 100644
--- a/mumctl/src/main.rs
+++ b/mumctl/src/main.rs
@@ -17,7 +17,7 @@ macro_rules! err_print {
}
fn main() {
- setup_logger();
+ setup_logger(io::stderr(), true);
let mut app = App::new("mumctl")
.setting(AppSettings::ArgRequiredElseHelp)
diff --git a/mumd/src/main.rs b/mumd/src/main.rs
index 5ae077a..9381a61 100644
--- a/mumd/src/main.rs
+++ b/mumd/src/main.rs
@@ -21,7 +21,7 @@ use tokio::task::spawn_blocking;
#[tokio::main]
async fn main() {
- setup_logger();
+ setup_logger(std::io::stderr(), true);
// Oneshot channel for setting UDP CryptState from control task
// For simplicity we don't deal with re-syncing, real applications would have to.
diff --git a/mumlib/src/lib.rs b/mumlib/src/lib.rs
index d989a7e..40f37ef 100644
--- a/mumlib/src/lib.rs
+++ b/mumlib/src/lib.rs
@@ -5,19 +5,29 @@ pub mod state;
use colored::*;
use log::*;
-pub fn setup_logger() {
+pub fn setup_logger<T: Into<fern::Output>>(target: T, color: bool) {
fern::Dispatch::new()
- .format(|out, message, record| {
+ .format(move |out, message, record| {
let message = message.to_string();
out.finish(format_args!(
"{} {}:{}{}{}",
//TODO runtime flag that disables color
- match record.level() {
- Level::Error => "ERROR".red(),
- Level::Warn => "WARN ".yellow(),
- Level::Info => "INFO ".normal(),
- Level::Debug => "DEBUG".green(),
- Level::Trace => "TRACE".normal(),
+ if color {
+ match record.level() {
+ Level::Error => "ERROR".red(),
+ Level::Warn => "WARN ".yellow(),
+ Level::Info => "INFO ".normal(),
+ Level::Debug => "DEBUG".green(),
+ Level::Trace => "TRACE".normal(),
+ }
+ } else {
+ match record.level() {
+ Level::Error => "ERROR",
+ Level::Warn => "WARN ",
+ Level::Info => "INFO ",
+ Level::Debug => "DEBUG",
+ Level::Trace => "TRACE",
+ }.normal()
},
record.file().unwrap(),
record.line().unwrap(),
@@ -30,7 +40,7 @@ pub fn setup_logger() {
))
})
.level(log::LevelFilter::Debug)
- .chain(std::io::stderr())
+ .chain(target.into())
.apply()
.unwrap();
}