diff --git a/crates/cli/src/commands/relay.rs b/crates/cli/src/commands/relay.rs index 4ae7317d..3fb0e8c9 100644 --- a/crates/cli/src/commands/relay.rs +++ b/crates/cli/src/commands/relay.rs @@ -12,6 +12,14 @@ use tracing::{error, info}; /// once `BackgroundTaskController::shutdown` has been signalled. const LOKI_FLUSH_TIMEOUT: Duration = Duration::from_secs(3); +fn relay_filter(base: &str, relay_level: &str) -> String { + if relay_level.is_empty() { + base.to_string() + } else { + format!("{base},libp2p_relay={relay_level}") + } +} + /// Arguments for the relay command. #[derive(clap::Args, Clone)] pub struct RelayArgs { @@ -90,14 +98,19 @@ impl TryInto for RelayArgs { } }; - let log_config = - build_console_tracing_config(self.log.level.clone(), &self.log.color, loki_config); + let p2p_relay = self.relay.p2p_relay_log_level; + + let log_config = build_console_tracing_config( + relay_filter(self.log.level.as_str(), &p2p_relay), + &self.log.color, + loki_config, + ); let builder = pluto_relay_server::config::Config::builder() .data_dir(self.data_dir.data_dir) .http_addr(self.relay.http_address) .auto_p2p_key(self.relay.auto_p2p_key) - .libp2p_log_level(self.relay.p2p_relay_log_level) + .libp2p_log_level(p2p_relay) .max_res_per_peer(self.relay.max_res_per_peer) .max_conns(self.relay.max_conns) // Invert p2p-advertise-private-addresses flag boolean: @@ -382,6 +395,8 @@ mod tests { use tokio::net; use tokio_util::sync::CancellationToken; + use crate::commands::relay::relay_filter; + #[tokio::test] async fn run_bootnode() { with_relay_server( @@ -640,4 +655,9 @@ mod tests { .build(); request.retry(&mut backoff).await } + #[test] + fn relay_filter_works() { + assert_eq!(relay_filter("info", ""), "info"); + assert_eq!(relay_filter("debug", "warn"), "debug,libp2p_relay=warn"); + } }