diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2024-03-03 14:07:44 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-03 14:07:44 +0100 |
| commit | e634a0a51b088bd8df4e07d2f2666daabb01e338 (patch) | |
| tree | edfea2a13c4f69cdb58f2ce4e4c5c9d8f84cbed8 /compiler | |
| parent | d769aceab6286100ee3b19ae1b9f4008c3617c01 (diff) | |
| parent | 90162ea7b15a8ecebe1d3c0be6cc8687dbbb05e1 (diff) | |
| download | rust-e634a0a51b088bd8df4e07d2f2666daabb01e338.tar.gz rust-e634a0a51b088bd8df4e07d2f2666daabb01e338.zip | |
Rollup merge of #121934 - RalfJung:tree-wraparound, r=oli-obk
rustc_log: expose tracing-tree "wraparound" in an env var This would be RUSTC_LOG_WRAPTREE, but I am open to other names. r? `@oli-obk`
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_log/src/lib.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/compiler/rustc_log/src/lib.rs b/compiler/rustc_log/src/lib.rs index 1a78f9f0f86..e4b67cde244 100644 --- a/compiler/rustc_log/src/lib.rs +++ b/compiler/rustc_log/src/lib.rs @@ -57,6 +57,7 @@ pub struct LoggerConfig { pub verbose_entry_exit: Result<String, VarError>, pub verbose_thread_ids: Result<String, VarError>, pub backtrace: Result<String, VarError>, + pub wraptree: Result<String, VarError>, } impl LoggerConfig { @@ -67,6 +68,7 @@ impl LoggerConfig { verbose_entry_exit: env::var(format!("{env}_ENTRY_EXIT")), verbose_thread_ids: env::var(format!("{env}_THREAD_IDS")), backtrace: env::var(format!("{env}_BACKTRACE")), + wraptree: env::var(format!("{env}_WRAPTREE")), } } } @@ -99,7 +101,7 @@ pub fn init_logger(cfg: LoggerConfig) -> Result<(), Error> { Err(_) => false, }; - let layer = tracing_tree::HierarchicalLayer::default() + let mut layer = tracing_tree::HierarchicalLayer::default() .with_writer(io::stderr) .with_indent_lines(true) .with_ansi(color_logs) @@ -110,6 +112,16 @@ pub fn init_logger(cfg: LoggerConfig) -> Result<(), Error> { .with_thread_ids(verbose_thread_ids) .with_thread_names(verbose_thread_ids); + match cfg.wraptree { + Ok(v) => match v.parse::<usize>() { + Ok(v) => { + layer = layer.with_wraparound(v); + } + Err(_) => return Err(Error::InvalidWraptree(v)), + }, + Err(_) => {} // no wraptree + } + let subscriber = tracing_subscriber::Registry::default().with(filter).with(layer); match cfg.backtrace { Ok(str) => { @@ -164,6 +176,7 @@ pub fn stderr_isatty() -> bool { pub enum Error { InvalidColorValue(String), NonUnicodeColorValue, + InvalidWraptree(String), } impl std::error::Error for Error {} @@ -179,6 +192,10 @@ impl Display for Error { formatter, "non-Unicode log color value: expected one of always, never, or auto", ), + Error::InvalidWraptree(value) => write!( + formatter, + "invalid log WRAPTREE value '{value}': expected a non-negative integer", + ), } } } |
