feat: send logs into admin room

Log entries will automatically be deduplicated, so a message won't be
sent if the same line has already been sent in the last 30 mins
This commit is contained in:
Timo Kösters 2020-11-14 23:13:06 +01:00
parent ecea0d4af2
commit 9439f2c183
No known key found for this signature in database
GPG key ID: 24DA7517711A2BA4
6 changed files with 87 additions and 23 deletions

View file

@ -11,7 +11,8 @@ mod ruma_wrapper;
mod utils;
pub use database::Database;
pub use error::{Error, Result};
pub use error::{ConduitLogger, Error, Result};
use log::LevelFilter;
pub use pdu::PduEvent;
pub use rocket::State;
pub use ruma_wrapper::{ConduitResult, Ruma, RumaResponse};
@ -19,6 +20,9 @@ pub use ruma_wrapper::{ConduitResult, Ruma, RumaResponse};
use rocket::{fairing::AdHoc, routes};
fn setup_rocket() -> rocket::Rocket {
// Force log level off, so we can use our own logger
std::env::set_var("ROCKET_LOG", "off");
rocket::ignite()
.mount(
"/",
@ -133,6 +137,12 @@ fn setup_rocket() -> rocket::Rocket {
let data = Database::load_or_create(rocket.config().await).expect("valid config");
data.sending.start_handler(&data.globals, &data.rooms);
log::set_boxed_logger(Box::new(ConduitLogger {
db: data.clone(),
last_logs: Default::default(),
}))
.unwrap();
log::set_max_level(LevelFilter::Info);
Ok(rocket.manage(data))
}))
@ -140,10 +150,5 @@ fn setup_rocket() -> rocket::Rocket {
#[rocket::main]
async fn main() {
// Default log level
if std::env::var("ROCKET_LOG").is_err() {
std::env::set_var("ROCKET_LOG", "critical");
}
setup_rocket().launch().await.unwrap();
}