diff --git a/bench-tps/src/main.rs b/bench-tps/src/main.rs index c66f061a84..7aeb04ec22 100644 --- a/bench-tps/src/main.rs +++ b/bench-tps/src/main.rs @@ -12,7 +12,7 @@ use std::{collections::HashMap, fs::File, io::prelude::*, path::Path, process::e pub const NUM_SIGNATURES_FOR_TXS: u64 = 100_000 * 60 * 60 * 24 * 7; fn main() { - solana_logger::setup_with_filter("solana=info"); + solana_logger::setup_with_default("solana=info"); solana_metrics::set_panic_hook("bench-tps"); let matches = cli::build_args(solana_clap_utils::version!()).get_matches(); diff --git a/core/src/rpc.rs b/core/src/rpc.rs index 57f4b0532c..053a6088e0 100644 --- a/core/src/rpc.rs +++ b/core/src/rpc.rs @@ -1023,7 +1023,7 @@ impl RpcSol for RpcSolImpl { } fn set_log_filter(&self, _meta: Self::Metadata, filter: String) -> Result<()> { - solana_logger::setup_with_filter(&filter); + solana_logger::setup_with(&filter); Ok(()) } diff --git a/faucet/src/bin/faucet.rs b/faucet/src/bin/faucet.rs index 7307b27a5e..4975c633e4 100644 --- a/faucet/src/bin/faucet.rs +++ b/faucet/src/bin/faucet.rs @@ -12,7 +12,7 @@ use std::{ }; fn main() -> Result<(), Box> { - solana_logger::setup_with_filter("solana=info"); + solana_logger::setup_with_default("solana=info"); solana_metrics::set_panic_hook("faucet"); let matches = App::new(crate_name!()) .about(crate_description!()) diff --git a/gossip/src/main.rs b/gossip/src/main.rs index 625df6f95e..b682cdb9dc 100644 --- a/gossip/src/main.rs +++ b/gossip/src/main.rs @@ -13,7 +13,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::process::exit; fn main() -> Result<(), Box> { - solana_logger::setup_with_filter("solana=info"); + solana_logger::setup_with_default("solana=info"); let matches = App::new(crate_name!()) .about(crate_description!()) diff --git a/ledger-tool/src/main.rs b/ledger-tool/src/main.rs index e7c3d6a244..974bc2df47 100644 --- a/ledger-tool/src/main.rs +++ b/ledger-tool/src/main.rs @@ -515,7 +515,7 @@ fn open_database(ledger_path: &Path) -> Database { #[allow(clippy::cognitive_complexity)] fn main() { const DEFAULT_ROOT_COUNT: &str = "1"; - solana_logger::setup_with_filter("solana=info"); + solana_logger::setup_with_default("solana=info"); let starting_slot_arg = Arg::with_name("starting_slot") .long("starting-slot") diff --git a/logger/src/lib.rs b/logger/src/lib.rs index eea936e0de..0fcb724eea 100644 --- a/logger/src/lib.rs +++ b/logger/src/lib.rs @@ -22,12 +22,7 @@ impl log::Log for LoggerShim { fn flush(&self) {} } -// Configures logging with a specific filter. -// May be called at any time to re-configure the log filter -pub fn setup_with_filter(filter: &str) { - let logger = env_logger::Builder::from_env(env_logger::Env::new().default_filter_or(filter)) - .format_timestamp_nanos() - .build(); +fn replace_logger(logger: env_logger::Logger) { let max_level = logger.filter(); log::set_max_level(max_level); let mut rw = LOGGER.write().unwrap(); @@ -35,7 +30,26 @@ pub fn setup_with_filter(filter: &str) { let _ = log::set_boxed_logger(Box::new(LoggerShim {})); } -// Configures logging with the default filter ("error") -pub fn setup() { - setup_with_filter("error"); +// Configures logging with a specific filter overriding RUST_LOG. _RUST_LOG is used instead +// so if set it takes precedence. +// May be called at any time to re-configure the log filter +pub fn setup_with(filter: &str) { + let logger = + env_logger::Builder::from_env(env_logger::Env::new().filter_or("_RUST_LOG", filter)) + .format_timestamp_nanos() + .build(); + replace_logger(logger); +} + +// Configures logging with a default filter if RUST_LOG is not set +pub fn setup_with_default(filter: &str) { + let logger = env_logger::Builder::from_env(env_logger::Env::new().default_filter_or(filter)) + .format_timestamp_nanos() + .build(); + replace_logger(logger); +} + +// Configures logging with the default filter "error" if RUST_LOG is not set +pub fn setup() { + setup_with_default("error"); } diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index 12382ad250..7ef20bb05c 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -93,7 +93,7 @@ pub fn process_instruction( keyed_accounts: &mut [KeyedAccount], ix_data: &[u8], ) -> Result<(), InstructionError> { - solana_logger::setup(); + solana_logger::setup_with_default("solana=info"); if let Ok(instruction) = limited_deserialize(ix_data) { match instruction { diff --git a/programs/vote/src/vote_instruction.rs b/programs/vote/src/vote_instruction.rs index bb9f5f777c..21be410356 100644 --- a/programs/vote/src/vote_instruction.rs +++ b/programs/vote/src/vote_instruction.rs @@ -179,7 +179,7 @@ pub fn process_instruction( keyed_accounts: &mut [KeyedAccount], data: &[u8], ) -> Result<(), InstructionError> { - solana_logger::setup_with_filter("solana=info"); + solana_logger::setup_with_default("solana=info"); trace!("process_instruction: {:?}", data); trace!("keyed_accounts: {:?}", keyed_accounts); diff --git a/validator/src/main.rs b/validator/src/main.rs index 532a8ce138..720db5e6c3 100644 --- a/validator/src/main.rs +++ b/validator/src/main.rs @@ -692,7 +692,7 @@ pub fn main() { } }; - solana_logger::setup_with_filter( + solana_logger::setup_with_default( &[ "solana=info", /* info logging for all solana modules */ "rpc=trace", /* json_rpc request/response logging */ diff --git a/watchtower/src/main.rs b/watchtower/src/main.rs index 8e4bbb9791..e29e9e15fe 100644 --- a/watchtower/src/main.rs +++ b/watchtower/src/main.rs @@ -48,7 +48,7 @@ fn main() -> Result<(), Box> { let json_rpc_url = value_t_or_exit!(matches, "json_rpc_url", String); let validator_identity = pubkey_of(&matches, "validator_identity").map(|i| i.to_string()); - solana_logger::setup_with_filter("solana=info"); + solana_logger::setup_with_default("solana=info"); solana_metrics::set_panic_hook("watchtower"); let rpc_client = RpcClient::new(json_rpc_url);