Skip to content
26 changes: 23 additions & 3 deletions crates/cli/src/commands/relay.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -90,14 +98,19 @@ impl TryInto<pluto_relay_server::config::Config> 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:
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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");
}
}