Skip to content

Commit c4182e3

Browse files
authored
simulator: Write dependency logs to separate files (#7433)
This PR relates to: - #7199 - -> workspace_filter has been enabled (dependency logging has been disabled) - #7394 - -> file logging has been optionally enabled Building on these, this PR enables dependency logging for the simulators. The logs are written to separate files. The libp2p/discv5 logs: - are saved to the directory specified with `--log-dir` - respects the `RUST_LOG` environment variable for log level configuration
1 parent 1853d83 commit c4182e3

File tree

6 files changed

+64
-24
lines changed

6 files changed

+64
-24
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lighthouse/environment/src/tracing_common.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@ pub fn construct_logger<E: EthSpec>(
3737
environment_builder.init_tracing(logger_config.clone(), logfile_prefix);
3838

3939
let libp2p_discv5_layer = if let Some(subcommand_name) = subcommand_name {
40-
if subcommand_name == "beacon_node" || subcommand_name == "boot_node" {
40+
if subcommand_name == "beacon_node"
41+
|| subcommand_name == "boot_node"
42+
|| subcommand_name == "basic-sim"
43+
|| subcommand_name == "fallback-sim"
44+
{
4145
if logger_config.max_log_size == 0 || logger_config.max_log_number == 0 {
4246
// User has explicitly disabled logging to file.
4347
None

testing/simulator/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ rayon = { workspace = true }
2020
sensitive_url = { path = "../../common/sensitive_url" }
2121
serde_json = { workspace = true }
2222
tokio = { workspace = true }
23+
tracing = { workspace = true }
2324
tracing-subscriber = { workspace = true }
2425
types = { workspace = true }

testing/simulator/src/basic_sim.rs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ use std::time::Duration;
1717

1818
use environment::tracing_common;
1919
use tracing_subscriber::prelude::*;
20-
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
20+
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
2121

2222
use logging::build_workspace_filter;
2323
use tokio::time::sleep;
24+
use tracing::Level;
2425
use types::{Epoch, EthSpec, MinimalEthSpec};
2526

2627
const END_EPOCH: u64 = 16;
@@ -36,36 +37,39 @@ const SUGGESTED_FEE_RECIPIENT: [u8; 20] =
3637

3738
#[allow(clippy::large_stack_frames)]
3839
pub fn run_basic_sim(matches: &ArgMatches) -> Result<(), String> {
39-
let node_count = matches
40+
let (_name, subcommand_matches) = matches.subcommand().expect("subcommand");
41+
let node_count = subcommand_matches
4042
.get_one::<String>("nodes")
4143
.expect("missing nodes default")
4244
.parse::<usize>()
4345
.expect("missing nodes default");
44-
let proposer_nodes = matches
46+
let proposer_nodes = subcommand_matches
4547
.get_one::<String>("proposer-nodes")
4648
.unwrap_or(&String::from("0"))
4749
.parse::<usize>()
4850
.unwrap_or(0);
4951
// extra beacon node added with delay
5052
let extra_nodes: usize = 1;
5153
println!("PROPOSER-NODES: {}", proposer_nodes);
52-
let validators_per_node = matches
54+
let validators_per_node = subcommand_matches
5355
.get_one::<String>("validators-per-node")
5456
.expect("missing validators-per-node default")
5557
.parse::<usize>()
5658
.expect("missing validators-per-node default");
57-
let speed_up_factor = matches
59+
let speed_up_factor = subcommand_matches
5860
.get_one::<String>("speed-up-factor")
5961
.expect("missing speed-up-factor default")
6062
.parse::<u64>()
6163
.expect("missing speed-up-factor default");
62-
let log_level = matches
64+
let log_level = subcommand_matches
6365
.get_one::<String>("debug-level")
6466
.expect("missing debug-level");
6567

66-
let continue_after_checks = matches.get_flag("continue-after-checks");
67-
let log_dir = matches.get_one::<String>("log-dir").map(PathBuf::from);
68-
let disable_stdout_logging = matches.get_flag("disable-stdout-logging");
68+
let continue_after_checks = subcommand_matches.get_flag("continue-after-checks");
69+
let log_dir = subcommand_matches
70+
.get_one::<String>("log-dir")
71+
.map(PathBuf::from);
72+
let disable_stdout_logging = subcommand_matches.get_flag("disable-stdout-logging");
6973

7074
println!("Basic Simulator:");
7175
println!(" nodes: {}", node_count);
@@ -98,7 +102,7 @@ pub fn run_basic_sim(matches: &ArgMatches) -> Result<(), String> {
98102
stdout_logging_layer,
99103
file_logging_layer,
100104
_sse_logging_layer_opt,
101-
_libp2p_discv5_layer,
105+
libp2p_discv5_layer,
102106
) = tracing_common::construct_logger(
103107
LoggerConfig {
104108
path: log_dir,
@@ -138,6 +142,17 @@ pub fn run_basic_sim(matches: &ArgMatches) -> Result<(), String> {
138142
.boxed(),
139143
);
140144
}
145+
if let Some(libp2p_discv5_layer) = libp2p_discv5_layer {
146+
logging_layers.push(
147+
libp2p_discv5_layer
148+
.with_filter(
149+
EnvFilter::builder()
150+
.with_default_directive(Level::DEBUG.into())
151+
.from_env_lossy(),
152+
)
153+
.boxed(),
154+
);
155+
}
141156

142157
if let Err(e) = tracing_subscriber::registry()
143158
.with(logging_layers)

testing/simulator/src/fallback_sim.rs

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use clap::ArgMatches;
55
use crate::retry::with_retry;
66
use environment::tracing_common;
77
use futures::prelude::*;
8+
use logging::build_workspace_filter;
89
use node_test_rig::{
910
environment::{EnvironmentBuilder, LoggerConfig},
1011
testing_validator_config, ValidatorFiles,
@@ -15,8 +16,9 @@ use std::path::PathBuf;
1516
use std::sync::Arc;
1617
use std::time::Duration;
1718
use tokio::time::sleep;
19+
use tracing::Level;
1820
use tracing_subscriber::prelude::*;
19-
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
21+
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
2022
use types::{Epoch, EthSpec, MinimalEthSpec};
2123
const END_EPOCH: u64 = 16;
2224
const GENESIS_DELAY: u64 = 32;
@@ -39,40 +41,43 @@ const SUGGESTED_FEE_RECIPIENT: [u8; 20] =
3941
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1];
4042

4143
pub fn run_fallback_sim(matches: &ArgMatches) -> Result<(), String> {
42-
let vc_count = matches
44+
let (_name, subcommand_matches) = matches.subcommand().expect("subcommand");
45+
let vc_count = subcommand_matches
4346
.get_one::<String>("vc-count")
4447
.expect("missing vc-count default")
4548
.parse::<usize>()
4649
.expect("missing vc-count default");
4750

48-
let validators_per_vc = matches
51+
let validators_per_vc = subcommand_matches
4952
.get_one::<String>("validators-per-vc")
5053
.expect("missing validators-per-vc default")
5154
.parse::<usize>()
5255
.expect("missing validators-per-vc default");
5356

54-
let bns_per_vc = matches
57+
let bns_per_vc = subcommand_matches
5558
.get_one::<String>("bns-per-vc")
5659
.expect("missing bns-per-vc default")
5760
.parse::<usize>()
5861
.expect("missing bns-per-vc default");
5962

6063
assert!(bns_per_vc > 1);
61-
let speed_up_factor = matches
64+
let speed_up_factor = subcommand_matches
6265
.get_one::<String>("speed-up-factor")
6366
.expect("missing speed-up-factor default")
6467
.parse::<u64>()
6568
.expect("missing speed-up-factor default");
6669

67-
let log_level = matches
70+
let log_level = subcommand_matches
6871
.get_one::<String>("debug-level")
6972
.expect("missing debug-level default");
7073

71-
let continue_after_checks = matches.get_flag("continue-after-checks");
74+
let continue_after_checks = subcommand_matches.get_flag("continue-after-checks");
7275

73-
let log_dir = matches.get_one::<String>("log-dir").map(PathBuf::from);
76+
let log_dir = subcommand_matches
77+
.get_one::<String>("log-dir")
78+
.map(PathBuf::from);
7479

75-
let disable_stdout_logging = matches.get_flag("disable-stdout-logging");
80+
let disable_stdout_logging = subcommand_matches.get_flag("disable-stdout-logging");
7681

7782
println!("Fallback Simulator:");
7883
println!(" vc-count: {}", vc_count);
@@ -104,7 +109,7 @@ pub fn run_fallback_sim(matches: &ArgMatches) -> Result<(), String> {
104109
stdout_logging_layer,
105110
file_logging_layer,
106111
_sse_logging_layer_opt,
107-
_libp2p_discv5_layer,
112+
libp2p_discv5_layer,
108113
) = tracing_common::construct_logger(
109114
LoggerConfig {
110115
path: log_dir,
@@ -126,18 +131,32 @@ pub fn run_fallback_sim(matches: &ArgMatches) -> Result<(), String> {
126131
EnvironmentBuilder::minimal(),
127132
);
128133

134+
let workspace_filter = build_workspace_filter()?;
129135
let mut logging_layers = vec![];
130136
if !disable_stdout_logging {
131137
logging_layers.push(
132138
stdout_logging_layer
133139
.with_filter(logger_config.debug_level)
140+
.with_filter(workspace_filter.clone())
134141
.boxed(),
135142
);
136143
}
137144
if let Some(file_logging_layer) = file_logging_layer {
138145
logging_layers.push(
139146
file_logging_layer
140147
.with_filter(logger_config.logfile_debug_level)
148+
.with_filter(workspace_filter)
149+
.boxed(),
150+
);
151+
}
152+
if let Some(libp2p_discv5_layer) = libp2p_discv5_layer {
153+
logging_layers.push(
154+
libp2p_discv5_layer
155+
.with_filter(
156+
EnvFilter::builder()
157+
.with_default_directive(Level::DEBUG.into())
158+
.from_env_lossy(),
159+
)
141160
.boxed(),
142161
);
143162
}

testing/simulator/src/main.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ fn main() {
2929
Builder::from_env(Env::default()).init();
3030

3131
let matches = cli_app().get_matches();
32-
match matches.subcommand() {
33-
Some(("basic-sim", matches)) => match basic_sim::run_basic_sim(matches) {
32+
match matches.subcommand_name() {
33+
Some("basic-sim") => match basic_sim::run_basic_sim(&matches) {
3434
Ok(()) => println!("Simulation exited successfully"),
3535
Err(e) => {
3636
eprintln!("Simulation exited with error: {}", e);
3737
std::process::exit(1)
3838
}
3939
},
40-
Some(("fallback-sim", matches)) => match fallback_sim::run_fallback_sim(matches) {
40+
Some("fallback-sim") => match fallback_sim::run_fallback_sim(&matches) {
4141
Ok(()) => println!("Simulation exited successfully"),
4242
Err(e) => {
4343
eprintln!("Simulation exited with error: {}", e);

0 commit comments

Comments
 (0)