diff --git a/gitarena-common/src/log.rs b/gitarena-common/src/log.rs index 73ebf49..89c04c9 100644 --- a/gitarena-common/src/log.rs +++ b/gitarena-common/src/log.rs @@ -9,16 +9,19 @@ use tracing::metadata::LevelFilter; use tracing::Subscriber; use tracing_appender::non_blocking::WorkerGuard; use tracing_appender::rolling; -use tracing_subscriber::filter::FromEnvError; +use tracing_subscriber::filter::{FilterExt, FromEnvError}; use tracing_subscriber::fmt::Layer; use tracing_subscriber::layer::SubscriberExt; use tracing_subscriber::registry::LookupSpan; use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::{layer, EnvFilter, Registry}; +use tracing_subscriber::{layer, EnvFilter, Layer as RootLayer, Registry}; use tracing_unwrap::ResultExt; -// Keep in sync with `gitarena::init_logger` -pub fn init_logger(module: &str, directives: &'static [&str]) -> Result> { +pub fn init_logger( + module: &str, + directives: &'static [&str], + additional: Option + Send + Sync + 'static>>, +) -> Result> { let mut guards = Vec::new(); let env_filter = @@ -38,6 +41,7 @@ pub fn init_logger(module: &str, directives: &'static [&str]) -> Result Result<()> { let broadcaster = Broadcaster::new(); - let mut _log_guards = init_logger(broadcaster.clone())?; + let _log_guards = init_logger( + "gitarena", + &[ + "actix_http=info", + "actix_server=info", + "askalono=warn", + "globset=info", + "h2=info", + "hyper=info", + "reqwest=info", + "rustls=info", + "sqlx=warn", + ], + Some(AdminPanelLayer::new(broadcaster.clone()).boxed()), + )?; let db_pool = create_postgres_pool("gitarena", None).await?; sqlx::migrate!().run(&db_pool).await?; @@ -172,53 +186,6 @@ async fn main() -> Result<()> { Ok(()) } -// This method is basically the same as `gitarena_common::log::init_logger` except it additionally adds the AdminPanelLayer at the end -// Please keep this in sync with it -fn init_logger(broadcaster: Data>) -> Result> { - let mut guards = Vec::new(); - - let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|err| { - default_env( - err, - &[ - "actix_http=info", - "actix_server=info", - "askalono=warn", - "globset=info", - "h2=info", - "hyper=info", - "reqwest=info", - "rustls=info", - "sqlx=warn", - ], - ) - }); - - let stdout_layer = stdout().map(|(layer, guard)| { - guards.push(guard); - layer - }); - - let file_layer = log_file("gitarena")?.map(|(layer, guard)| { - guards.push(guard); - layer - }); - - let (env_filter, tokio_console_layer) = tokio_console(env_filter); - - // https://stackoverflow.com/a/66138267 - Registry::default() - .with(env_filter) - .with(stdout_layer) - .with(file_layer) - .with(tokio_console_layer) - .with(AdminPanelLayer::new(broadcaster)) - .try_init() - .context("Failed to initialize logger")?; - - Ok(guards) -} - fn read_magic_database() -> Result { let cookie = Cookie::open(CookieFlags::default())?;