feat(tvix/tracing): optional progressbar

Disable the progressbar on default and provide a interface for
optionally enabling the progressbar.

Change-Id: I0e31b1957e80cf64a8dcf65c6ceb3713975b8220
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11861
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
Autosubmit: Simon Hauser <simon.hauser@helsinki-systems.de>
This commit is contained in:
Simon Hauser 2024-06-19 11:30:31 +02:00
parent 1446e3be99
commit bd8d74a3ee
4 changed files with 19 additions and 6 deletions

View file

@ -54,7 +54,9 @@ enum Commands {
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let cli = Cli::parse();
let _ = tvix_tracing::TracingBuilder::default().level(cli.log_level);
let _ = tvix_tracing::TracingBuilder::default()
.level(cli.log_level)
.enable_progressbar();
match cli.command {
Commands::Daemon {

View file

@ -281,6 +281,7 @@ fn main() {
let _ = tvix_tracing::TracingBuilder::default()
.level(args.log_level)
.enable_progressbar()
.build()
.expect("unable to set up tracing subscriber");
let tokio_runtime = tokio::runtime::Runtime::new().expect("failed to setup tokio runtime");

View file

@ -506,7 +506,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let tracing_handle = {
let mut builder = tvix_tracing::TracingBuilder::default();
builder = builder.level(cli.log_level);
builder = builder.level(cli.log_level).enable_progressbar();
#[cfg(feature = "otlp")]
{
if cli.otlp {

View file

@ -114,6 +114,7 @@ impl TracingHandle {
pub struct TracingBuilder {
level: Level,
progess_bar: bool,
#[cfg(feature = "otlp")]
service_name: Option<&'static str>,
@ -123,6 +124,7 @@ impl Default for TracingBuilder {
fn default() -> Self {
TracingBuilder {
level: Level::INFO,
progess_bar: false,
#[cfg(feature = "otlp")]
service_name: None,
@ -145,6 +147,12 @@ impl TracingBuilder {
self
}
/// Enable progress bar layer, default is disabled
pub fn enable_progressbar(mut self) -> TracingBuilder {
self.progess_bar = true;
self
}
/// This will setup tracing based on the configuration passed in.
/// It will setup a stderr writer output layer and a EnvFilter based on the provided log
/// level (RUST_LOG still has a higher priority over the configured value).
@ -167,10 +175,12 @@ impl TracingBuilder {
.with_writer(indicatif_layer.get_stderr_writer())
.compact(),
)
.with(indicatif_layer.with_filter(
.with((self.progess_bar).then(|| {
indicatif_layer.with_filter(
// only show progress for spans with indicatif.pb_show field being set
IndicatifFilter::new(false),
));
)
}));
// Setup otlp if a service_name is configured
#[cfg(feature = "otlp")]