rustc_log: expose tracing-tree "wraparound" in an env var
This commit is contained in:
parent
a09d91b04a
commit
90162ea7b1
@ -57,6 +57,7 @@ pub struct LoggerConfig {
|
|||||||
pub verbose_entry_exit: Result<String, VarError>,
|
pub verbose_entry_exit: Result<String, VarError>,
|
||||||
pub verbose_thread_ids: Result<String, VarError>,
|
pub verbose_thread_ids: Result<String, VarError>,
|
||||||
pub backtrace: Result<String, VarError>,
|
pub backtrace: Result<String, VarError>,
|
||||||
|
pub wraptree: Result<String, VarError>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LoggerConfig {
|
impl LoggerConfig {
|
||||||
@ -67,6 +68,7 @@ pub fn from_env(env: &str) -> Self {
|
|||||||
verbose_entry_exit: env::var(format!("{env}_ENTRY_EXIT")),
|
verbose_entry_exit: env::var(format!("{env}_ENTRY_EXIT")),
|
||||||
verbose_thread_ids: env::var(format!("{env}_THREAD_IDS")),
|
verbose_thread_ids: env::var(format!("{env}_THREAD_IDS")),
|
||||||
backtrace: env::var(format!("{env}_BACKTRACE")),
|
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,
|
Err(_) => false,
|
||||||
};
|
};
|
||||||
|
|
||||||
let layer = tracing_tree::HierarchicalLayer::default()
|
let mut layer = tracing_tree::HierarchicalLayer::default()
|
||||||
.with_writer(io::stderr)
|
.with_writer(io::stderr)
|
||||||
.with_indent_lines(true)
|
.with_indent_lines(true)
|
||||||
.with_ansi(color_logs)
|
.with_ansi(color_logs)
|
||||||
@ -110,6 +112,16 @@ pub fn init_logger(cfg: LoggerConfig) -> Result<(), Error> {
|
|||||||
.with_thread_ids(verbose_thread_ids)
|
.with_thread_ids(verbose_thread_ids)
|
||||||
.with_thread_names(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);
|
let subscriber = tracing_subscriber::Registry::default().with(filter).with(layer);
|
||||||
match cfg.backtrace {
|
match cfg.backtrace {
|
||||||
Ok(str) => {
|
Ok(str) => {
|
||||||
@ -164,6 +176,7 @@ pub fn stderr_isatty() -> bool {
|
|||||||
pub enum Error {
|
pub enum Error {
|
||||||
InvalidColorValue(String),
|
InvalidColorValue(String),
|
||||||
NonUnicodeColorValue,
|
NonUnicodeColorValue,
|
||||||
|
InvalidWraptree(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::error::Error for Error {}
|
impl std::error::Error for Error {}
|
||||||
@ -179,6 +192,10 @@ fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|||||||
formatter,
|
formatter,
|
||||||
"non-Unicode log color value: expected one of always, never, or auto",
|
"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",
|
||||||
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user