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:
		
							parent
							
								
									1446e3be99
								
							
						
					
					
						commit
						bd8d74a3ee
					
				
					 4 changed files with 19 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue