diff options
author | Florian Klink <flokli@flokli.de> | 2024-02-14T01·56+0700 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-02-17T08·06+0000 |
commit | d29330466726ae7263598fd8051894e18745461b (patch) | |
tree | 790c2387b8f54413fcddf3d36d38e197564d84a5 /tvix/cli/src/main.rs | |
parent | 87bda3ae7aaf459cd30672164587a3fe246d209a (diff) |
feat(tvix/cli): set up tracing[-subscriber] r/7543
No otlp yet, this simply gives us structured log output and a cli argument for the log level. Change-Id: Ifaa60bae419640e92baebb6ee59eedd775c769c2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10853 Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/cli/src/main.rs')
-rw-r--r-- | tvix/cli/src/main.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tvix/cli/src/main.rs b/tvix/cli/src/main.rs index da09ab878954..24b180c1f289 100644 --- a/tvix/cli/src/main.rs +++ b/tvix/cli/src/main.rs @@ -2,6 +2,9 @@ use clap::Parser; use rustyline::{error::ReadlineError, Editor}; use std::rc::Rc; use std::{fs, path::PathBuf}; +use tracing::Level; +use tracing_subscriber::fmt::writer::MakeWriterExt; +use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; use tvix_build::buildservice; use tvix_eval::builtins::impure_builtins; use tvix_eval::observer::{DisassemblingObserver, TracingObserver}; @@ -12,6 +15,9 @@ use tvix_glue::{builtins::add_derivation_builtins, configure_nix_path}; #[derive(Parser)] struct Args { + #[arg(long)] + log_level: Option<Level>, + /// Path to a script to evaluate script: Option<PathBuf>, @@ -213,6 +219,18 @@ fn lint(code: &str, path: Option<PathBuf>, args: &Args) -> bool { fn main() { let args = Args::parse(); + // configure log settings + let level = args.log_level.unwrap_or(Level::INFO); + + let subscriber = tracing_subscriber::registry().with( + tracing_subscriber::fmt::Layer::new() + .with_writer(std::io::stderr.with_max_level(level)) + .pretty(), + ); + subscriber + .try_init() + .expect("unable to set up tracing subscriber"); + if let Some(file) = &args.script { run_file(file.clone(), &args) } else if let Some(expr) = &args.expr { |