From 589099e43a59dc13c99dd35aa3ecc59aa5be7a36 Mon Sep 17 00:00:00 2001 From: Cole Helbling Date: Tue, 23 Apr 2024 07:54:02 -0700 Subject: [PATCH] wip: see if there's some logging we're missing --- Cargo.lock | 23 ++++++++++++++++++----- magic-nix-cache/Cargo.toml | 1 + magic-nix-cache/src/api.rs | 6 ++++++ magic-nix-cache/src/main.rs | 30 ++++++++++++++++++++++++------ 4 files changed, 49 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae5b563..5a5b063 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2554,6 +2554,7 @@ dependencies = [ "tokio-util", "tower-http", "tracing", + "tracing-appender", "tracing-subscriber", "uuid", ] @@ -4665,6 +4666,18 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" +dependencies = [ + "crossbeam-channel", + "thiserror", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" version = "0.1.26" @@ -4698,12 +4711,12 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] @@ -4719,9 +4732,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", diff --git a/magic-nix-cache/Cargo.toml b/magic-nix-cache/Cargo.toml index e853dd3..6ee4709 100644 --- a/magic-nix-cache/Cargo.toml +++ b/magic-nix-cache/Cargo.toml @@ -32,6 +32,7 @@ tempfile = "3.9" uuid = { version = "1.4.0", features = ["serde", "v7", "rand", "std"] } futures = "0.3" async-compression = "0.4" +tracing-appender = "0.2.3" [dependencies.tokio] version = "1.28.0" diff --git a/magic-nix-cache/src/api.rs b/magic-nix-cache/src/api.rs index ae643bd..e8d8919 100644 --- a/magic-nix-cache/src/api.rs +++ b/magic-nix-cache/src/api.rs @@ -57,6 +57,12 @@ async fn workflow_finish( } } + // NOTE(cole-h): see `init_logging` + let logfile = std::env::temp_dir().join("magic-nix-cache-tracing.log"); + let logfile_contents = std::fs::read_to_string(logfile)?; + println!("Every log line throughout the lifetime of the program:"); + println!("\n{logfile_contents}\n"); + let reply = WorkflowFinishResponse {}; //state.metrics.num_new_paths.set(num_new_paths); diff --git a/magic-nix-cache/src/main.rs b/magic-nix-cache/src/main.rs index 3601399..f735ad0 100644 --- a/magic-nix-cache/src/main.rs +++ b/magic-nix-cache/src/main.rs @@ -35,6 +35,8 @@ use tempfile::NamedTempFile; use tokio::process::Command; use tokio::sync::{oneshot, Mutex, RwLock}; use tracing_subscriber::filter::EnvFilter; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::util::SubscriberInitExt; use gha_cache::Credentials; @@ -137,8 +139,6 @@ struct StateInner { } async fn main_cli() -> Result<()> { - init_logging(); - let args = Args::parse(); let metrics = Arc::new(telemetry::TelemetryReport::new()); @@ -439,13 +439,15 @@ async fn post_build_hook(out_paths: &str) -> Result<()> { #[tokio::main] async fn main() -> Result<()> { + let _guard = init_logging()?; + match std::env::var("OUT_PATHS") { Ok(out_paths) => post_build_hook(&out_paths).await, Err(_) => main_cli().await, } } -fn init_logging() { +fn init_logging() -> Result { let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| { #[cfg(debug_assertions)] return EnvFilter::new("info") @@ -456,11 +458,27 @@ fn init_logging() { return EnvFilter::new("info"); }); - tracing_subscriber::fmt() + let stderr_layer = tracing_subscriber::fmt::layer() .with_writer(std::io::stderr) - .pretty() - .with_env_filter(filter) + .pretty(); + + let logfile = std::env::temp_dir().join("magic-nix-cache-tracing.log"); + let file = std::fs::OpenOptions::new() + .create(true) + .append(true) + .open(logfile)?; + let (nonblocking, guard) = tracing_appender::non_blocking(file); + let file_layer = tracing_subscriber::fmt::layer() + .with_writer(nonblocking) + .pretty(); + + tracing_subscriber::registry() + .with(filter) + .with(stderr_layer) + .with(file_layer) .init(); + + Ok(guard) } #[cfg(debug_assertions)]