notifier: Add log notifier

This commit is contained in:
Trent Nelson
2021-02-24 22:32:36 -07:00
committed by mergify[bot]
parent 97eaf3c334
commit e7895e4411

View File

@ -20,7 +20,7 @@
use log::*; use log::*;
use reqwest::{blocking::Client, StatusCode}; use reqwest::{blocking::Client, StatusCode};
use serde_json::json; use serde_json::json;
use std::{env, thread::sleep, time::Duration}; use std::{env, str::FromStr, thread::sleep, time::Duration};
struct TelegramWebHook { struct TelegramWebHook {
bot_token: String, bot_token: String,
@ -80,6 +80,7 @@ enum NotificationType {
Slack(String), Slack(String),
Telegram(TelegramWebHook), Telegram(TelegramWebHook),
Twilio(TwilioWebHook), Twilio(TwilioWebHook),
Log(Level),
} }
pub struct Notifier { pub struct Notifier {
@ -118,6 +119,16 @@ impl Notifier {
notifiers.push(NotificationType::Twilio(webhook)); notifiers.push(NotificationType::Twilio(webhook));
} }
if let Ok(log_level) = env::var(format!("{}LOG_NOTIFIER_LEVEL", env_prefix)) {
match Level::from_str(&log_level) {
Ok(level) => notifiers.push(NotificationType::Log(level)),
Err(e) => warn!(
"could not parse specified log notifier level string ({}): {}",
log_level, e
),
}
}
info!("{} notifiers", notifiers.len()); info!("{} notifiers", notifiers.len());
Notifier { Notifier {
@ -191,6 +202,9 @@ impl Notifier {
warn!("Failed to send Twilio message: {:?}", err); warn!("Failed to send Twilio message: {:?}", err);
} }
} }
NotificationType::Log(level) => {
log!(*level, "{}", msg)
}
} }
} }
} }