feat(tvix/tracing): introduce common tvix-tracing crate
Introduce a new common crate that contains tracing boilerplate which then can be used in the cli, tvix-store and tvix-build crates. It has otlp as an optional feature, which is currently only used by tvix-store. Change-Id: I41468ac4d9c65174515d721513b96fea463d6ed2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11758 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de> Autosubmit: Simon Hauser <simon.hauser@helsinki-systems.de>
This commit is contained in:
parent
11a6ff7706
commit
825d498908
15 changed files with 271 additions and 203 deletions
|
|
@ -14,6 +14,7 @@ tvix-castore = { path = "../castore" }
|
|||
tvix-store = { path = "../store", default-features = false, features = []}
|
||||
tvix-eval = { path = "../eval" }
|
||||
tvix-glue = { path = "../glue" }
|
||||
tvix-tracing = { path = "../tracing" }
|
||||
bytes = "1.4.0"
|
||||
clap = { version = "4.0", features = ["derive", "env"] }
|
||||
dirs = "4.0.0"
|
||||
|
|
@ -21,8 +22,7 @@ rustyline = "10.0.0"
|
|||
rnix = "0.11.0"
|
||||
thiserror = "1.0.38"
|
||||
tokio = "1.28.0"
|
||||
tracing = { version = "0.1.37", features = ["max_level_trace", "release_max_level_info"] }
|
||||
tracing-subscriber = "0.3.16"
|
||||
tracing = "0.1.40"
|
||||
|
||||
[dependencies.wu-manber]
|
||||
git = "https://github.com/tvlfyi/wu-manber.git"
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@ use repl::Repl;
|
|||
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 tracing_subscriber::{EnvFilter, Layer};
|
||||
use tvix_build::buildservice;
|
||||
use tvix_eval::builtins::impure_builtins;
|
||||
use tvix_eval::observer::{DisassemblingObserver, TracingObserver};
|
||||
|
|
@ -27,8 +24,12 @@ static GLOBAL: Jemalloc = Jemalloc;
|
|||
|
||||
#[derive(Parser, Clone)]
|
||||
struct Args {
|
||||
#[arg(long)]
|
||||
log_level: Option<Level>,
|
||||
/// A global log level to use when printing logs.
|
||||
/// It's also possible to set `RUST_LOG` according to
|
||||
/// `tracing_subscriber::filter::EnvFilter`, which will always have
|
||||
/// priority.
|
||||
#[arg(long, default_value_t=Level::INFO)]
|
||||
log_level: Level,
|
||||
|
||||
/// Path to a script to evaluate
|
||||
script: Option<PathBuf>,
|
||||
|
|
@ -270,24 +271,7 @@ 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))
|
||||
.compact()
|
||||
.with_filter(
|
||||
EnvFilter::builder()
|
||||
.with_default_directive(level.into())
|
||||
.from_env()
|
||||
.expect("invalid RUST_LOG"),
|
||||
),
|
||||
);
|
||||
subscriber
|
||||
.try_init()
|
||||
.expect("unable to set up tracing subscriber");
|
||||
|
||||
tvix_tracing::init(args.log_level).expect("unable to set up tracing subscriber");
|
||||
let tokio_runtime = tokio::runtime::Runtime::new().expect("failed to setup tokio runtime");
|
||||
|
||||
let io_handle = init_io_handle(&tokio_runtime, &args);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue