diff options
author | Florian Klink <flokli@flokli.de> | 2024-03-17T19·09+0200 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2024-03-18T16·10+0000 |
commit | c0e16059e6198411f6d60bafa6a06a1e86332858 (patch) | |
tree | 2fcc9dd6490915e356d497fd001026de9eaf6dca | |
parent | 82f8ce8b7da9d28d09a11b1b8b31bad5ce8fabe2 (diff) |
feat(tvix/store): support RUST_LOG env var r/7723
This allows selectively increasing the log level for only parts of the stack. For example, the following RUST_LOG env var enables "tracing" level logging for `tvix_store` and `tvix_castore`, while keeping it at "info" for the rest of the stack: export RUST_LOG='info,tvix_store=trace,tvix_castore=trace' It only affects logs, not traces (if enabled). Change-Id: Ib936bd132a405f216e75c843db83fbd71d20a18a Reviewed-on: https://cl.tvl.fyi/c/depot/+/11182 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: Connor Brewster <cbrewster@hey.com>
-rw-r--r-- | tvix/Cargo.lock | 38 | ||||
-rw-r--r-- | tvix/Cargo.nix | 105 | ||||
-rw-r--r-- | tvix/store/Cargo.toml | 2 | ||||
-rw-r--r-- | tvix/store/src/bin/tvix-store.rs | 28 |
4 files changed, 153 insertions, 20 deletions
diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock index a10dabdc0ee0..ec5955188421 100644 --- a/tvix/Cargo.lock +++ b/tvix/Cargo.lock @@ -385,7 +385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" dependencies = [ "memchr", - "regex-automata", + "regex-automata 0.4.3", "serde", ] @@ -1711,6 +1711,15 @@ dependencies = [ ] [[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] name = "matchit" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2291,7 +2300,7 @@ dependencies = [ "rand", "rand_chacha", "rand_xorshift", - "regex-syntax", + "regex-syntax 0.8.2", "rusty-fork", "tempfile", "unarray", @@ -2532,8 +2541,17 @@ checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -2544,11 +2562,17 @@ checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.2", ] [[package]] name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" @@ -3734,12 +3758,16 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ + "matchers", "nu-ansi-term", + "once_cell", + "regex", "serde", "serde_json", "sharded-slab", "smallvec", "thread_local", + "tracing", "tracing-core", "tracing-log", "tracing-serde", diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index 87f9bbac7090..31d6faec252d 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -1333,7 +1333,7 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata"; + packageId = "regex-automata 0.4.3"; optional = true; usesDefaultFeatures = false; features = [ "dfa-search" ]; @@ -5264,6 +5264,22 @@ rec { }; resolvedDefaultFeatures = [ "default" "v5-04" "v5-05" "v5-10" "v5-13" "v5-20" "v5-21" "v5-22" "v5-23" "v5-25" "v5-27" "v5-32" "v5-35" "v5-38" ]; }; + "matchers" = rec { + crateName = "matchers"; + version = "0.1.0"; + edition = "2018"; + sha256 = "0n2mbk7lg2vf962c8xwzdq96yrc9i0p8dbmm4wa1nnkcp1dhfqw2"; + authors = [ + "Eliza Weisman <eliza@buoyant.io>" + ]; + dependencies = [ + { + name = "regex-automata"; + packageId = "regex-automata 0.1.10"; + } + ]; + + }; "matchit" = rec { crateName = "matchit"; version = "0.7.3"; @@ -7094,7 +7110,7 @@ rec { } { name = "regex-syntax"; - packageId = "regex-syntax"; + packageId = "regex-syntax 0.8.2"; optional = true; } { @@ -7777,13 +7793,13 @@ rec { } { name = "regex-automata"; - packageId = "regex-automata"; + packageId = "regex-automata 0.4.3"; usesDefaultFeatures = false; features = [ "alloc" "syntax" "meta" "nfa-pikevm" ]; } { name = "regex-syntax"; - packageId = "regex-syntax"; + packageId = "regex-syntax 0.8.2"; usesDefaultFeatures = false; } ]; @@ -7811,7 +7827,31 @@ rec { }; resolvedDefaultFeatures = [ "default" "perf" "perf-backtrack" "perf-cache" "perf-dfa" "perf-inline" "perf-literal" "perf-onepass" "std" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; }; - "regex-automata" = rec { + "regex-automata 0.1.10" = rec { + crateName = "regex-automata"; + version = "0.1.10"; + edition = "2015"; + sha256 = "0ci1hvbzhrfby5fdpf4ganhf7kla58acad9i1ff1p34dzdrhs8vc"; + authors = [ + "Andrew Gallant <jamslam@gmail.com>" + ]; + dependencies = [ + { + name = "regex-syntax"; + packageId = "regex-syntax 0.6.29"; + optional = true; + } + ]; + features = { + "default" = [ "std" ]; + "fst" = [ "dep:fst" ]; + "regex-syntax" = [ "dep:regex-syntax" ]; + "std" = [ "regex-syntax" ]; + "transducer" = [ "std" "fst" ]; + }; + resolvedDefaultFeatures = [ "default" "regex-syntax" "std" ]; + }; + "regex-automata 0.4.3" = rec { crateName = "regex-automata"; version = "0.4.3"; edition = "2021"; @@ -7835,7 +7875,7 @@ rec { } { name = "regex-syntax"; - packageId = "regex-syntax"; + packageId = "regex-syntax 0.8.2"; optional = true; usesDefaultFeatures = false; } @@ -7871,7 +7911,21 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "dfa-onepass" "dfa-search" "hybrid" "meta" "nfa-backtrack" "nfa-pikevm" "nfa-thompson" "perf-inline" "perf-literal" "perf-literal-multisubstring" "perf-literal-substring" "std" "syntax" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "unicode-word-boundary" ]; }; - "regex-syntax" = rec { + "regex-syntax 0.6.29" = rec { + crateName = "regex-syntax"; + version = "0.6.29"; + edition = "2018"; + sha256 = "1qgj49vm6y3zn1hi09x91jvgkl2b1fiaq402skj83280ggfwcqpi"; + authors = [ + "The Rust Project Developers" + ]; + features = { + "default" = [ "unicode" ]; + "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; + }; + resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; + }; + "regex-syntax 0.8.2" = rec { crateName = "regex-syntax"; version = "0.8.2"; edition = "2021"; @@ -11774,11 +11828,28 @@ rec { ]; dependencies = [ { + name = "matchers"; + packageId = "matchers"; + optional = true; + } + { name = "nu-ansi-term"; packageId = "nu-ansi-term"; optional = true; } { + name = "once_cell"; + packageId = "once_cell"; + optional = true; + } + { + name = "regex"; + packageId = "regex"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" "unicode-case" "unicode-perl" ]; + } + { name = "serde"; packageId = "serde"; optional = true; @@ -11804,6 +11875,12 @@ rec { optional = true; } { + name = "tracing"; + packageId = "tracing"; + optional = true; + usesDefaultFeatures = false; + } + { name = "tracing-core"; packageId = "tracing-core"; usesDefaultFeatures = false; @@ -11823,6 +11900,16 @@ rec { ]; devDependencies = [ { + name = "regex"; + packageId = "regex"; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "tracing"; + packageId = "tracing"; + } + { name = "tracing-log"; packageId = "tracing-log"; } @@ -11855,7 +11942,7 @@ rec { "valuable-serde" = [ "dep:valuable-serde" ]; "valuable_crate" = [ "dep:valuable_crate" ]; }; - resolvedDefaultFeatures = [ "alloc" "ansi" "default" "fmt" "json" "nu-ansi-term" "registry" "serde" "serde_json" "sharded-slab" "smallvec" "std" "thread_local" "tracing-log" "tracing-serde" ]; + resolvedDefaultFeatures = [ "alloc" "ansi" "default" "env-filter" "fmt" "json" "matchers" "nu-ansi-term" "once_cell" "regex" "registry" "serde" "serde_json" "sharded-slab" "smallvec" "std" "thread_local" "tracing" "tracing-log" "tracing-serde" ]; }; "try-lock" = rec { crateName = "try-lock"; @@ -12796,7 +12883,7 @@ rec { { name = "tracing-subscriber"; packageId = "tracing-subscriber"; - features = [ "json" ]; + features = [ "env-filter" "json" ]; } { name = "tvix-castore"; diff --git a/tvix/store/Cargo.toml b/tvix/store/Cargo.toml index 2dd155dbbc2e..366bd3921684 100644 --- a/tvix/store/Cargo.toml +++ b/tvix/store/Cargo.toml @@ -31,7 +31,7 @@ tonic = { version = "0.11.0", features = ["tls", "tls-roots"] } tower = "0.4.13" tracing = "0.1.37" tracing-opentelemetry = "0.22.0" -tracing-subscriber = { version = "0.3.16", features = ["json"] } +tracing-subscriber = { version = "0.3.16", features = ["env-filter", "json"] } tvix-castore = { path = "../castore" } url = "2.4.0" walkdir = "2.4.0" diff --git a/tvix/store/src/bin/tvix-store.rs b/tvix/store/src/bin/tvix-store.rs index f3a5d01b605b..27a67b7c91c1 100644 --- a/tvix/store/src/bin/tvix-store.rs +++ b/tvix/store/src/bin/tvix-store.rs @@ -10,7 +10,8 @@ use tokio_listener::UserOptions; use tonic::transport::Server; use tracing::info; use tracing::Level; -use tracing_subscriber::fmt::writer::MakeWriterExt; +use tracing_subscriber::EnvFilter; +use tracing_subscriber::Layer; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; use tvix_castore::proto::blob_service_server::BlobServiceServer; @@ -55,6 +56,10 @@ struct Cli { #[arg(long, default_missing_value = "true", default_value = "true", num_args(0..=1), require_equals(true), action(clap::ArgAction::Set))] otlp: bool, + /// 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)] log_level: Option<Level>, @@ -172,19 +177,32 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { // configure log settings let level = cli.log_level.unwrap_or(Level::INFO); + // Set up the tracing subscriber. let subscriber = tracing_subscriber::registry() .with( cli.json.then_some( tracing_subscriber::fmt::Layer::new() - .with_writer(std::io::stderr.with_max_level(level)) - .json(), + .with_writer(std::io::stderr) + .json() + .with_filter( + EnvFilter::builder() + .with_default_directive(level.into()) + .from_env() + .expect("invalid RUST_LOG"), + ), ), ) .with( (!cli.json).then_some( tracing_subscriber::fmt::Layer::new() - .with_writer(std::io::stderr.with_max_level(level)) - .pretty(), + .with_writer(std::io::stderr) + .pretty() + .with_filter( + EnvFilter::builder() + .with_default_directive(level.into()) + .from_env() + .expect("invalid RUST_LOG"), + ), ), ); |