diff --git a/Cargo.lock b/Cargo.lock index f76bb66af6a..35d19fbc469 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12688,6 +12688,7 @@ dependencies = [ "subspace-erasure-coding", "subspace-farmer-components", "subspace-kzg", + "subspace-logging", "subspace-metrics", "subspace-networking", "subspace-proof-of-space", @@ -12695,14 +12696,12 @@ dependencies = [ "subspace-rpc-primitives", "subspace-verification", "substrate-bip39", - "supports-color", "tempfile", "thiserror 2.0.0", "thread-priority", "tokio", "tokio-stream", "tracing", - "tracing-subscriber", "ulid", "zeroize", ] @@ -12762,13 +12761,12 @@ dependencies = [ "subspace-erasure-coding", "subspace-gateway-rpc", "subspace-kzg", + "subspace-logging", "subspace-networking", "subspace-rpc-primitives", "subspace-verification", - "supports-color", "tokio", "tracing", - "tracing-subscriber", ] [[package]] @@ -12801,6 +12799,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "subspace-logging" +version = "0.0.1" +dependencies = [ + "supports-color", + "tracing", + "tracing-subscriber", +] + [[package]] name = "subspace-malicious-operator" version = "0.1.0" @@ -12906,12 +12913,12 @@ dependencies = [ "serde", "serde_json", "subspace-core-primitives", + "subspace-logging", "subspace-metrics", "thiserror 2.0.0", "tokio", "tokio-stream", "tracing", - "tracing-subscriber", "unsigned-varint 0.8.0", "void", ] @@ -12969,6 +12976,7 @@ dependencies = [ "sp-messenger", "sp-runtime", "subspace-core-primitives", + "subspace-logging", "subspace-metrics", "subspace-networking", "subspace-proof-of-space", @@ -12977,13 +12985,11 @@ dependencies = [ "subspace-service", "substrate-build-script-utils", "substrate-prometheus-endpoint", - "supports-color", "tempfile", "thiserror 2.0.0", "tokio", "tokio-stream", "tracing", - "tracing-subscriber", ] [[package]] diff --git a/crates/subspace-farmer/Cargo.toml b/crates/subspace-farmer/Cargo.toml index 0648c203872..bff753a07f3 100644 --- a/crates/subspace-farmer/Cargo.toml +++ b/crates/subspace-farmer/Cargo.toml @@ -56,6 +56,7 @@ subspace-data-retrieval = { version = "0.1.0", path = "../../shared/subspace-dat subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding" } subspace-farmer-components = { version = "0.1.0", path = "../subspace-farmer-components" } subspace-kzg = { version = "0.1.0", path = "../../shared/subspace-kzg" } +subspace-logging = { version = "0.0.1", path = "../../shared/subspace-logging", optional = true } subspace-metrics = { version = "0.1.0", path = "../../shared/subspace-metrics", optional = true } subspace-networking = { version = "0.1.0", path = "../subspace-networking" } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space" } @@ -63,14 +64,12 @@ subspace-proof-of-space-gpu = { version = "0.1.0", path = "../../shared/subspace subspace-rpc-primitives = { version = "0.1.0", path = "../subspace-rpc-primitives" } subspace-verification = { version = "0.1.0", path = "../subspace-verification" } substrate-bip39 = "0.6.0" -supports-color = { version = "3.0.1", optional = true } tempfile = "3.13.0" thiserror = "2.0.0" thread-priority = "1.1.0" tokio = { version = "1.40.0", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync", "time"] } tokio-stream = { version = "0.1.16", features = ["sync"] } tracing = "0.1.40" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"], optional = true } ulid = { version = "1.1.3", features = ["serde"] } zeroize = "1.8.1" @@ -97,6 +96,5 @@ binary = [ "dep:fdlimit", "dep:mimalloc", "dep:subspace-metrics", - "dep:supports-color", - "dep:tracing-subscriber", + "dep:subspace-logging", ] diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/main.rs b/crates/subspace-farmer/src/bin/subspace-farmer/main.rs index 440309fb919..7c9634f9e02 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/main.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/main.rs @@ -8,11 +8,9 @@ use std::path::PathBuf; use std::process::exit; use std::{fs, panic}; use subspace_farmer::single_disk_farm::{ScrubTarget, SingleDiskFarm}; +use subspace_logging::init_logger; use subspace_proof_of_space::chia::ChiaTable; use tracing::info; -use tracing_subscriber::filter::LevelFilter; -use tracing_subscriber::prelude::*; -use tracing_subscriber::{fmt, EnvFilter}; #[global_allocator] static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; @@ -77,23 +75,7 @@ async fn main() -> anyhow::Result<()> { exit(1); })); - tracing_subscriber::registry() - .with( - fmt::layer() - // TODO: Workaround for https://github.com/tokio-rs/tracing/issues/2214, also on - // Windows terminal doesn't support the same colors as bash does - .with_ansi(if cfg!(windows) { - false - } else { - supports_color::on(supports_color::Stream::Stderr).is_some() - }) - .with_filter( - EnvFilter::builder() - .with_default_directive(LevelFilter::INFO.into()) - .from_env_lossy(), - ), - ) - .init(); + init_logger(); utils::raise_fd_limit(); let command = Command::parse(); diff --git a/crates/subspace-gateway-rpc/src/lib.rs b/crates/subspace-gateway-rpc/src/lib.rs index 4986f0741d3..f50b3e521ca 100644 --- a/crates/subspace-gateway-rpc/src/lib.rs +++ b/crates/subspace-gateway-rpc/src/lib.rs @@ -9,7 +9,7 @@ use subspace_core_primitives::hashes::{blake3_hash, Blake3Hash}; use subspace_core_primitives::objects::GlobalObjectMapping; use subspace_data_retrieval::object_fetcher::{self, ObjectFetcher}; use subspace_data_retrieval::piece_getter::PieceGetter; -use tracing::debug; +use tracing::{debug, error, trace}; const SUBSPACE_ERROR: i32 = 9000; @@ -154,7 +154,13 @@ where let data_hash = blake3_hash(&data); if data_hash != mapping.hash { - debug!(?data_hash, ?mapping.hash, "Retrieved data did not match mapping hash"); + error!( + ?data_hash, + data_size = %data.len(), + ?mapping.hash, + "Retrieved data did not match mapping hash", + ); + trace!(data = %hex::encode(data), "Retrieved data"); return Err(Error::InvalidObjectHash { mapping_hash: mapping.hash, data_hash, diff --git a/crates/subspace-gateway/Cargo.toml b/crates/subspace-gateway/Cargo.toml index 3feff8f10f6..3127b26d067 100644 --- a/crates/subspace-gateway/Cargo.toml +++ b/crates/subspace-gateway/Cargo.toml @@ -38,10 +38,9 @@ subspace-data-retrieval = { version = "0.1.0", path = "../../shared/subspace-dat subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding" } subspace-gateway-rpc = { version = "0.1.0", path = "../subspace-gateway-rpc" } subspace-kzg = { version = "0.1.0", path = "../../shared/subspace-kzg" } +subspace-logging = { version = "0.0.1", path = "../../shared/subspace-logging" } subspace-networking = { version = "0.1.0", path = "../subspace-networking" } subspace-rpc-primitives = { version = "0.1.0", path = "../subspace-rpc-primitives" } subspace-verification = { version = "0.1.0", path = "../subspace-verification", default-features = false } -supports-color = "3.0.1" tokio = { version = "1.40.0", features = ["rt-multi-thread", "signal", "macros"] } tracing = "0.1.40" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } diff --git a/crates/subspace-gateway/src/commands.rs b/crates/subspace-gateway/src/commands.rs index 22b924b832c..439add72bf6 100644 --- a/crates/subspace-gateway/src/commands.rs +++ b/crates/subspace-gateway/src/commands.rs @@ -24,11 +24,7 @@ use subspace_kzg::Kzg; use subspace_networking::utils::piece_provider::PieceProvider; use subspace_networking::NodeRunner; use tokio::signal; -use tracing::level_filters::LevelFilter; use tracing::{debug, warn}; -use tracing_subscriber::layer::SubscriberExt; -use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::{fmt, EnvFilter, Layer}; /// The default size limit, based on the maximum block size in some domains. pub const DEFAULT_MAX_SIZE: usize = 5 * 1024 * 1024; @@ -75,25 +71,6 @@ pub(crate) fn set_exit_on_panic() { })); } -pub(crate) fn init_logger() { - // TODO: Workaround for https://github.com/tokio-rs/tracing/issues/2214, also on - // Windows terminal doesn't support the same colors as bash does - let enable_color = if cfg!(windows) { - false - } else { - supports_color::on(supports_color::Stream::Stderr).is_some() - }; - tracing_subscriber::registry() - .with( - fmt::layer().with_ansi(enable_color).with_filter( - EnvFilter::builder() - .with_default_directive(LevelFilter::INFO.into()) - .from_env_lossy(), - ), - ) - .init(); -} - pub(crate) fn raise_fd_limit() { match fdlimit::raise_fd_limit() { Ok(fdlimit::Outcome::LimitRaised { from, to }) => { diff --git a/crates/subspace-gateway/src/main.rs b/crates/subspace-gateway/src/main.rs index 0f4c63c20f6..65ae7569837 100644 --- a/crates/subspace-gateway/src/main.rs +++ b/crates/subspace-gateway/src/main.rs @@ -5,8 +5,9 @@ mod node_client; mod piece_getter; mod piece_validator; -use crate::commands::{init_logger, raise_fd_limit, set_exit_on_panic, Command}; +use crate::commands::{raise_fd_limit, set_exit_on_panic, Command}; use clap::Parser; +use subspace_logging::init_logger; use tracing::info; #[global_allocator] diff --git a/crates/subspace-networking/Cargo.toml b/crates/subspace-networking/Cargo.toml index 06b5d2d39b6..1f6184dbb88 100644 --- a/crates/subspace-networking/Cargo.toml +++ b/crates/subspace-networking/Cargo.toml @@ -40,15 +40,16 @@ schnellru = "0.2.3" serde = { version = "1.0.110", features = ["derive"] } serde_json = "1.0.128" subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } +subspace-logging = { version = "0.0.1", path = "../../shared/subspace-logging" } subspace-metrics = { version = "0.1.0", path = "../../shared/subspace-metrics" } thiserror = "2.0.0" tokio = { version = "1.40.0", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync", "time"] } tokio-stream = "0.1.16" tracing = "0.1.40" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } unsigned-varint = { version = "0.8.0", features = ["futures", "asynchronous_codec"] } void = "1.0.2" + [dependencies.libp2p] # TODO: Replace with upstream once https://github.com/libp2p/rust-libp2p/issues/5626 and # https://github.com/libp2p/rust-libp2p/issues/5634 are resolved diff --git a/crates/subspace-networking/examples/benchmark.rs b/crates/subspace-networking/examples/benchmark.rs index 4e0a3856b9e..85bfa61227c 100644 --- a/crates/subspace-networking/examples/benchmark.rs +++ b/crates/subspace-networking/examples/benchmark.rs @@ -15,13 +15,11 @@ use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; use std::time::{Duration, Instant}; use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_logging::init_logger; use subspace_networking::protocols::request_response::handlers::piece_by_index::PieceByIndexRequestHandler; use subspace_networking::utils::piece_provider::{NoPieceValidator, PieceProvider, PieceValidator}; use subspace_networking::{Config, Node}; -use tracing::{debug, error, info, trace, warn, Level}; -use tracing_subscriber::fmt::Subscriber; -use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::EnvFilter; +use tracing::{debug, error, info, trace, warn}; /// Defines initial duration between get_piece calls. const GET_PIECE_INITIAL_INTERVAL: Duration = Duration::from_secs(5); @@ -128,8 +126,7 @@ enum Command { #[tokio::main] async fn main() { - init_logging(); - + init_logger(); let args: Args = Args::parse(); info!(?args, "Benchmark started."); @@ -396,14 +393,3 @@ pub async fn configure_dsn( node } - -fn init_logging() { - // set default log to info if the RUST_LOG is not set. - let env_filter = EnvFilter::builder() - .with_default_directive(Level::INFO.into()) - .from_env_lossy(); - - let builder = Subscriber::builder().with_env_filter(env_filter).finish(); - - builder.init() -} diff --git a/crates/subspace-networking/examples/get-peers.rs b/crates/subspace-networking/examples/get-peers.rs index acf345bfe18..521bc00029a 100644 --- a/crates/subspace-networking/examples/get-peers.rs +++ b/crates/subspace-networking/examples/get-peers.rs @@ -4,11 +4,12 @@ use libp2p::multiaddr::Protocol; use parking_lot::Mutex; use std::sync::Arc; use std::time::Duration; +use subspace_logging::init_logger; use subspace_networking::Config; #[tokio::main] async fn main() { - tracing_subscriber::fmt::init(); + init_logger(); let config_1 = Config { listen_on: vec!["/ip4/0.0.0.0/tcp/0".parse().unwrap()], diff --git a/crates/subspace-networking/examples/metrics.rs b/crates/subspace-networking/examples/metrics.rs index 51abd409bbd..85d68208347 100644 --- a/crates/subspace-networking/examples/metrics.rs +++ b/crates/subspace-networking/examples/metrics.rs @@ -7,6 +7,7 @@ use parking_lot::Mutex; use prometheus_client::registry::Registry; use std::sync::Arc; use std::time::Duration; +use subspace_logging::init_logger; use subspace_metrics::{start_prometheus_metrics_server, RegistryAdapter}; use subspace_networking::{Config, Node}; use tokio::signal; @@ -15,7 +16,7 @@ use tracing::{error, info}; #[tokio::main] async fn main() { - tracing_subscriber::fmt::init(); + init_logger(); let mut metric_registry = Registry::default(); let metrics = Metrics::new(&mut metric_registry); diff --git a/crates/subspace-networking/examples/networking.rs b/crates/subspace-networking/examples/networking.rs index 08fc896b415..8d36096744b 100644 --- a/crates/subspace-networking/examples/networking.rs +++ b/crates/subspace-networking/examples/networking.rs @@ -7,13 +7,14 @@ use libp2p::multiaddr::Protocol; use parking_lot::Mutex; use std::sync::Arc; use std::time::Duration; +use subspace_logging::init_logger; use subspace_networking::Config; const TOPIC: &str = "Foo"; #[tokio::main] async fn main() { - tracing_subscriber::fmt::init(); + init_logger(); let config_1 = Config { listen_on: vec!["/ip4/0.0.0.0/tcp/0".parse().unwrap()], diff --git a/crates/subspace-networking/examples/random-walker.rs b/crates/subspace-networking/examples/random-walker.rs index 1e8a27f4175..f2e4fac004a 100644 --- a/crates/subspace-networking/examples/random-walker.rs +++ b/crates/subspace-networking/examples/random-walker.rs @@ -10,14 +10,12 @@ use std::collections::HashMap; use std::sync::Arc; use std::time::{Duration, Instant}; use subspace_core_primitives::pieces::PieceIndex; +use subspace_logging::init_logger; use subspace_networking::protocols::request_response::handlers::piece_by_index::{ PieceByIndexRequest, PieceByIndexRequestHandler, PieceByIndexResponse, }; use subspace_networking::{Config, Multihash, Node, PeerDiscovered, SendRequestError}; -use tracing::{debug, error, info, warn, Level}; -use tracing_subscriber::fmt::Subscriber; -use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::EnvFilter; +use tracing::{debug, error, info, warn}; #[derive(Debug, Parser)] struct Args { @@ -47,7 +45,7 @@ struct Args { #[tokio::main] async fn main() { - init_logging(); + init_logger(); let args: Args = Args::parse(); @@ -416,14 +414,3 @@ async fn configure_dsn( node } - -fn init_logging() { - // set default log to info if the RUST_LOG is not set. - let env_filter = EnvFilter::builder() - .with_default_directive(Level::INFO.into()) - .from_env_lossy(); - - let builder = Subscriber::builder().with_env_filter(env_filter).finish(); - - builder.init() -} diff --git a/crates/subspace-networking/examples/requests.rs b/crates/subspace-networking/examples/requests.rs index a9d178fad45..4bf99eb62af 100644 --- a/crates/subspace-networking/examples/requests.rs +++ b/crates/subspace-networking/examples/requests.rs @@ -4,6 +4,7 @@ use parity_scale_codec::{Decode, Encode}; use parking_lot::Mutex; use std::sync::Arc; use std::time::Duration; +use subspace_logging::init_logger; use subspace_networking::protocols::request_response::handlers::generic_request_handler::{ GenericRequest, GenericRequestHandler, }; @@ -24,7 +25,7 @@ struct ExampleResponse; #[tokio::main] async fn main() { - tracing_subscriber::fmt::init(); + init_logger(); let config_1 = Config { listen_on: vec!["/ip4/0.0.0.0/tcp/0".parse().unwrap()], diff --git a/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs b/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs index cfbc9cea153..9453c15c287 100644 --- a/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs +++ b/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs @@ -15,13 +15,11 @@ use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}; use std::panic; use std::process::exit; use std::sync::Arc; +use subspace_logging::init_logger; use subspace_metrics::{start_prometheus_metrics_server, RegistryAdapter}; use subspace_networking::libp2p::multiaddr::Protocol; use subspace_networking::{peer_id, Config, KademliaMode}; -use tracing::{debug, info, Level}; -use tracing_subscriber::fmt::Subscriber; -use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::EnvFilter; +use tracing::{debug, info}; /// Size of the LRU cache for peers. pub const KNOWN_PEERS_CACHE_SIZE: u32 = 10000; @@ -117,22 +115,10 @@ fn set_exit_on_panic() { })); } -fn init_logging() { - // set default log to info if the RUST_LOG is not set. - let env_filter = EnvFilter::builder() - .with_default_directive(Level::INFO.into()) - .from_env_lossy(); - - let builder = Subscriber::builder().with_env_filter(env_filter).finish(); - - builder.init() -} - #[tokio::main] async fn main() -> Result<(), Box> { set_exit_on_panic(); - init_logging(); - + init_logger(); let command: Command = Command::parse(); match command { diff --git a/crates/subspace-networking/src/node/tests.rs b/crates/subspace-networking/src/node/tests.rs index a76edf1471d..ac124b05c77 100644 --- a/crates/subspace-networking/src/node/tests.rs +++ b/crates/subspace-networking/src/node/tests.rs @@ -7,6 +7,7 @@ use libp2p::multiaddr::Protocol; use parity_scale_codec::{Decode, Encode}; use parking_lot::Mutex; use std::sync::Arc; +use subspace_logging::init_logger; #[derive(Encode, Decode)] struct ExampleRequest; @@ -22,7 +23,7 @@ struct ExampleResponse; #[tokio::test] async fn request_with_addresses() { - tracing_subscriber::fmt::init(); + init_logger(); let config_1 = Config { listen_on: vec!["/ip4/0.0.0.0/tcp/0".parse().unwrap()], diff --git a/crates/subspace-node/Cargo.toml b/crates/subspace-node/Cargo.toml index 9a9eca1cdba..0d0ad438feb 100644 --- a/crates/subspace-node/Cargo.toml +++ b/crates/subspace-node/Cargo.toml @@ -75,13 +75,12 @@ subspace-runtime = { version = "0.1.0", path = "../subspace-runtime" } subspace-runtime-primitives = { version = "0.1.0", path = "../subspace-runtime-primitives" } subspace-service = { version = "0.1.0", path = "../subspace-service" } substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "94a1a8143a89bbe9f938c1939ff68abc1519a305" } -supports-color = "3.0.1" tempfile = "3.13.0" thiserror = "2.0.0" tokio = { version = "1.40.0", features = ["macros"] } tokio-stream = "0.1.16" tracing = "0.1.40" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } +subspace-logging = { version = "0.0.1", path = "../../shared/subspace-logging" } [build-dependencies] substrate-build-script-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "94a1a8143a89bbe9f938c1939ff68abc1519a305" } diff --git a/crates/subspace-node/src/commands/domain_key.rs b/crates/subspace-node/src/commands/domain_key.rs index 7fe024b4747..77405fb3ec2 100644 --- a/crates/subspace-node/src/commands/domain_key.rs +++ b/crates/subspace-node/src/commands/domain_key.rs @@ -1,6 +1,4 @@ -use crate::commands::shared::{ - derive_keypair, init_logger, store_key_in_keystore, KeystoreOptions, -}; +use crate::commands::shared::{derive_keypair, store_key_in_keystore, KeystoreOptions}; use bip39::Mnemonic; use clap::Parser; use sc_cli::{Error, KeystoreParams}; @@ -9,6 +7,7 @@ use sp_core::crypto::{ExposeSecret, SecretString}; use sp_core::Pair; use sp_domains::DomainId; use std::path::PathBuf; +use subspace_logging::init_logger; use tracing::{info, warn}; /// Options for creating domain key @@ -27,7 +26,6 @@ pub struct CreateDomainKeyOptions { pub fn create_domain_key(options: CreateDomainKeyOptions) -> Result<(), Error> { init_logger(); - let CreateDomainKeyOptions { base_path, domain_id, @@ -95,7 +93,6 @@ pub struct InsertDomainKeyOptions { pub fn insert_domain_key(options: InsertDomainKeyOptions) -> Result<(), Error> { init_logger(); - let InsertDomainKeyOptions { base_path, domain_id, diff --git a/crates/subspace-node/src/commands/run.rs b/crates/subspace-node/src/commands/run.rs index 4cc1fe5dbe7..cce8f4d3cff 100644 --- a/crates/subspace-node/src/commands/run.rs +++ b/crates/subspace-node/src/commands/run.rs @@ -8,7 +8,6 @@ use crate::commands::run::consensus::{ use crate::commands::run::domain::{ create_domain_configuration, run_domain, DomainOptions, DomainStartOptions, }; -use crate::commands::shared::init_logger; use crate::{set_default_ss58_version, Error, PosTable}; use clap::Parser; use cross_domain_message_gossip::GossipWorkerBuilder; @@ -28,6 +27,7 @@ use sp_core::traits::SpawnEssentialNamed; use sp_messenger::messages::ChainId; use std::env; use std::sync::Arc; +use subspace_logging::init_logger; use subspace_metrics::{start_prometheus_metrics_server, RegistryAdapter}; use subspace_runtime::{Block, RuntimeApi}; use subspace_service::config::ChainSyncMode; @@ -76,7 +76,6 @@ fn raise_fd_limit() { pub async fn run(run_options: RunOptions) -> Result<(), Error> { init_logger(); raise_fd_limit(); - let signals = Signals::capture()?; let RunOptions { diff --git a/crates/subspace-node/src/commands/run/consensus.rs b/crates/subspace-node/src/commands/run/consensus.rs index 797e602e996..519a5fd386d 100644 --- a/crates/subspace-node/src/commands/run/consensus.rs +++ b/crates/subspace-node/src/commands/run/consensus.rs @@ -527,7 +527,6 @@ pub(super) fn create_consensus_chain_configuration( let transaction_pool; let rpc_cors; - // Development mode handling is limited to this section { if dev { diff --git a/crates/subspace-node/src/commands/shared.rs b/crates/subspace-node/src/commands/shared.rs index 52f48d1eec2..f45b7e965bb 100644 --- a/crates/subspace-node/src/commands/shared.rs +++ b/crates/subspace-node/src/commands/shared.rs @@ -9,9 +9,6 @@ use sp_keystore::Keystore; use std::panic; use std::path::PathBuf; use std::process::exit; -use tracing_subscriber::filter::LevelFilter; -use tracing_subscriber::prelude::*; -use tracing_subscriber::{fmt, EnvFilter}; /// Options used for keystore #[derive(Debug, Parser)] @@ -63,22 +60,3 @@ pub(crate) fn set_exit_on_panic() { exit(1); })); } - -pub(super) fn init_logger() { - // TODO: Workaround for https://github.com/tokio-rs/tracing/issues/2214, also on - // Windows terminal doesn't support the same colors as bash does - let enable_color = if cfg!(windows) { - false - } else { - supports_color::on(supports_color::Stream::Stderr).is_some() - }; - tracing_subscriber::registry() - .with( - fmt::layer().with_ansi(enable_color).with_filter( - EnvFilter::builder() - .with_default_directive(LevelFilter::INFO.into()) - .from_env_lossy(), - ), - ) - .init(); -} diff --git a/crates/subspace-node/src/commands/wipe.rs b/crates/subspace-node/src/commands/wipe.rs index 5302cce98ac..7f2bc2ce531 100644 --- a/crates/subspace-node/src/commands/wipe.rs +++ b/crates/subspace-node/src/commands/wipe.rs @@ -1,7 +1,7 @@ -use crate::commands::shared::init_logger; use clap::Parser; use std::path::PathBuf; use std::{fs, io}; +use subspace_logging::init_logger; use tracing::info; /// Options for running a node @@ -13,7 +13,6 @@ pub struct WipeOptions { pub fn wipe(WipeOptions { base_path }: WipeOptions) -> Result<(), io::Error> { init_logger(); - let paths = [ base_path.join("db"), base_path.join("domains"), diff --git a/shared/subspace-logging/Cargo.toml b/shared/subspace-logging/Cargo.toml new file mode 100644 index 00000000000..9345b5fc445 --- /dev/null +++ b/shared/subspace-logging/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "subspace-logging" +description = "Ensure all logging uilities are centralized for the whole project" +license = "Apache-2.0" +version = "0.0.1" +authors = ["Nazar Mokrynskyi "] +edition = "2021" +include = [ + "/src", + "/Cargo.toml", +] + +[dependencies] +tracing = "0.1.40" +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } +supports-color = "3.0.1" diff --git a/shared/subspace-logging/src/lib.rs b/shared/subspace-logging/src/lib.rs new file mode 100644 index 00000000000..4f6e7f87e43 --- /dev/null +++ b/shared/subspace-logging/src/lib.rs @@ -0,0 +1,23 @@ +use tracing::level_filters::LevelFilter; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::util::SubscriberInitExt; +use tracing_subscriber::{fmt, EnvFilter, Layer}; + +pub fn init_logger() { + // TODO: Workaround for https://github.com/tokio-rs/tracing/issues/2214, also on + // Windows terminal doesn't support the same colors as bash does + let enable_color = if cfg!(windows) { + false + } else { + supports_color::on(supports_color::Stream::Stderr).is_some() + }; + tracing_subscriber::registry() + .with( + fmt::layer().with_ansi(enable_color).with_filter( + EnvFilter::builder() + .with_default_directive(LevelFilter::INFO.into()) + .from_env_lossy(), + ), + ) + .init(); +}