From 0fbd0d66493d408f1ade923c8d07f03dcce78378 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Fri, 23 Feb 2024 12:50:06 -0700 Subject: [PATCH] collab: Log HTTP requests (#8297) Co-Authored-By: Marshall Release Notes: - N/A --------- Co-authored-by: Marshall Co-authored-by: Marshall Bowers --- Cargo.lock | 24 ++++++++++++++++++++++-- Cargo.toml | 1 + Procfile | 2 +- crates/collab/Cargo.toml | 1 + crates/collab/src/main.rs | 21 ++++++++++++++------- 5 files changed, 39 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c531f10753..092c6821f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1190,7 +1190,7 @@ dependencies = [ "tokio", "tokio-tungstenite", "tower", - "tower-http", + "tower-http 0.3.5", "tower-layer", "tower-service", ] @@ -1227,7 +1227,7 @@ dependencies = [ "serde_json", "tokio", "tower", - "tower-http", + "tower-http 0.3.5", "tower-layer", "tower-service", ] @@ -2123,6 +2123,7 @@ dependencies = [ "toml 0.8.10", "tonic", "tower", + "tower-http 0.4.4", "tracing", "tracing-log", "tracing-subscriber", @@ -10166,6 +10167,25 @@ dependencies = [ "tower-service", ] +[[package]] +name = "tower-http" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +dependencies = [ + "bitflags 2.4.1", + "bytes 1.5.0", + "futures-core", + "futures-util", + "http 0.2.9", + "http-body", + "http-range-header", + "pin-project-lite 0.2.13", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower-layer" version = "0.3.2" diff --git a/Cargo.toml b/Cargo.toml index 2d600bb086..9abbbc3af8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -235,6 +235,7 @@ thiserror = "1.0.29" tiktoken-rs = "0.5.7" time = { version = "0.3", features = ["serde", "serde-well-known", "formatting"] } toml = "0.8" +tower-http = "0.4.4" tree-sitter = { version = "0.20", features = ["wasm"] } tree-sitter-astro = { git = "https://github.com/virchau13/tree-sitter-astro.git", rev = "e924787e12e8a03194f36a113290ac11d6dc10f3" } tree-sitter-bash = { git = "https://github.com/tree-sitter/tree-sitter-bash", rev = "7331995b19b8f8aba2d5e26deb51d2195c18bc94" } diff --git a/Procfile b/Procfile index 288842ebd3..840f10e047 100644 --- a/Procfile +++ b/Procfile @@ -1,3 +1,3 @@ -collab: RUST_LOG=${RUST_LOG:-warn,collab=info} cargo run --package=collab serve +collab: RUST_LOG=${RUST_LOG:-warn,tower_http=info,collab=info} cargo run --package=collab serve livekit: livekit-server --dev blob_store: MINIO_ROOT_USER=the-blob-store-access-key MINIO_ROOT_PASSWORD=the-blob-store-secret-key minio server .blob_store diff --git a/crates/collab/Cargo.toml b/crates/collab/Cargo.toml index 214f8bf8aa..1591c3e950 100644 --- a/crates/collab/Cargo.toml +++ b/crates/collab/Cargo.toml @@ -61,6 +61,7 @@ tokio-tungstenite = "0.17" toml.workspace = true tonic = "0.6" tower = "0.4" +tower-http = { workspace = true, features = ["trace"] } tracing = "0.1.34" tracing-log = "0.1.3" tracing-subscriber = { version = "0.3.11", features = ["env-filter", "json"] } diff --git a/crates/collab/src/main.rs b/crates/collab/src/main.rs index 5f4a24a70a..916deeb1f9 100644 --- a/crates/collab/src/main.rs +++ b/crates/collab/src/main.rs @@ -12,6 +12,8 @@ use std::{ sync::Arc, }; use tokio::signal::unix::SignalKind; +use tower_http::trace::{self, TraceLayer}; +use tracing::Level; use tracing_log::LogTracer; use tracing_subscriber::{filter::EnvFilter, fmt::format::JsonFields, Layer}; use util::ResultExt; @@ -72,13 +74,18 @@ async fn main() -> Result<()> { if let Some(rpc_server) = rpc_server.clone() { app = app.merge(collab::rpc::routes(rpc_server)) } - app = app.merge( - Router::new() - .route("/", get(handle_root)) - .route("/healthz", get(handle_liveness_probe)) - .merge(collab::api::events::router()) - .layer(Extension(state.clone())), - ); + app = app + .merge( + Router::new() + .route("/", get(handle_root)) + .route("/healthz", get(handle_liveness_probe)) + .merge(collab::api::events::router()) + .layer(Extension(state.clone())), + ) + .layer( + TraceLayer::new_for_http() + .on_response(trace::DefaultOnResponse::new().level(Level::INFO)), + ); axum::Server::from_tcp(listener)? .serve(app.into_make_service_with_connect_info::())