From 430255fea5e5965e4b5f33746804583ea134aa7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bogdan-=C8=98tefan=20Neac=C5=9Fu?= Date: Fri, 8 Nov 2024 13:39:34 +0200 Subject: [PATCH] Add granular log on nym-node --- Cargo.lock | 1 + nym-node/Cargo.toml | 1 + nym-node/src/logging.rs | 33 +++++++++++++++++++++++++++++++++ nym-node/src/main.rs | 5 +++-- 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 nym-node/src/logging.rs diff --git a/Cargo.lock b/Cargo.lock index 475b6e3308..05e435eee6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6005,6 +6005,7 @@ dependencies = [ "tokio", "toml 0.8.14", "tracing", + "tracing-subscriber", "url", "zeroize", ] diff --git a/nym-node/Cargo.toml b/nym-node/Cargo.toml index 442b62a3b9..acd80a0777 100644 --- a/nym-node/Cargo.toml +++ b/nym-node/Cargo.toml @@ -27,6 +27,7 @@ serde = { workspace = true, features = ["derive"] } serde_json.workspace = true thiserror.workspace = true tracing.workspace = true +tracing-subscriber.workspace = true tokio = { workspace = true, features = ["macros", "sync"] } toml = { workspace = true } url = { workspace = true, features = ["serde"] } diff --git a/nym-node/src/logging.rs b/nym-node/src/logging.rs new file mode 100644 index 0000000000..8522eefdbd --- /dev/null +++ b/nym-node/src/logging.rs @@ -0,0 +1,33 @@ +// Copyright 2024 - Nym Technologies SA +// SPDX-License-Identifier: GPL-3.0-only + +use tracing::level_filters::LevelFilter; +use tracing_subscriber::{filter::Directive, EnvFilter}; + +pub(crate) fn setup_tracing_logger() { + fn directive_checked(directive: String) -> Directive { + directive.parse().expect("Failed to parse log directive") + } + + let log_builder = tracing_subscriber::fmt() + // Use a more compact, abbreviated log format + .compact() + // Display source code file paths + .with_file(true) + // Display source code line numbers + .with_line_number(true) + // Don't display the event's target (module path) + .with_target(false); + + let mut filter = EnvFilter::builder() + // if RUST_LOG isn't set, set default level + .with_default_directive(LevelFilter::INFO.into()) + .from_env_lossy(); + // these crates are more granularly filtered + let filter_crates = ["defguard_wireguard_rs"]; + for crate_name in filter_crates { + filter = filter.add_directive(directive_checked(format!("{}=warn", crate_name))); + } + + log_builder.with_env_filter(filter).init(); +} diff --git a/nym-node/src/main.rs b/nym-node/src/main.rs index adef6eeed0..29f1801c37 100644 --- a/nym-node/src/main.rs +++ b/nym-node/src/main.rs @@ -4,13 +4,14 @@ #![warn(clippy::expect_used)] #![warn(clippy::unwrap_used)] -use crate::cli::Cli; +use crate::{cli::Cli, logging::setup_tracing_logger}; use clap::{crate_name, crate_version, Parser}; -use nym_bin_common::logging::{maybe_print_banner, setup_tracing_logger}; +use nym_bin_common::logging::maybe_print_banner; use nym_config::defaults::setup_env; mod cli; mod env; +mod logging; pub(crate) mod node; #[tokio::main]