diff options
Diffstat (limited to 'tvix/store/src')
-rw-r--r-- | tvix/store/src/main.rs | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/tvix/store/src/main.rs b/tvix/store/src/main.rs index e71c1ef88614..6c3b44eec7f0 100644 --- a/tvix/store/src/main.rs +++ b/tvix/store/src/main.rs @@ -1,3 +1,4 @@ +use tracing_subscriber::prelude::*; use tvix_store::blobservice::SledBlobService; use tvix_store::chunkservice::SledChunkService; use tvix_store::directoryservice::SledDirectoryService; @@ -23,6 +24,10 @@ struct Cli { #[clap(long, short = 'l')] listen_address: Option<String>, + /// Whether to log in JSON + #[clap(long)] + json: bool, + #[clap(long)] log_level: Option<Level>, } @@ -37,8 +42,28 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { .unwrap(); let level = cli.log_level.unwrap_or(Level::INFO); - let subscriber = tracing_subscriber::fmt().with_max_level(level).finish(); - tracing::subscriber::set_global_default(subscriber).ok(); + + let subscriber = tracing_subscriber::registry() + .with(if cli.json { + Some( + tracing_subscriber::fmt::Layer::new() + .with_writer(std::io::stdout.with_max_level(level)) + .json(), + ) + } else { + None + }) + .with(if !cli.json { + Some( + tracing_subscriber::fmt::Layer::new() + .with_writer(std::io::stdout.with_max_level(level)) + .pretty(), + ) + } else { + None + }); + + tracing::subscriber::set_global_default(subscriber).expect("Unable to set global subscriber"); let mut server = Server::builder(); |