Log HTTP path in http logs (#8305)

Conrad Irwin and Marshall created

Co-Authored-By: Marshall <marshall@zed.dev>


Release Notes:

- N/A

Co-authored-by: Marshall <marshall@zed.dev>

Change summary

crates/collab/src/main.rs | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

Detailed changes

crates/collab/src/main.rs 🔗

@@ -1,10 +1,11 @@
 use anyhow::anyhow;
-use axum::{routing::get, Extension, Router};
+use axum::{extract::MatchedPath, routing::get, Extension, Router};
 use collab::{
     api::fetch_extensions_from_blob_store_periodically, db, env, executor::Executor, AppState,
     Config, MigrateConfig, Result,
 };
 use db::Database;
+use hyper::Request;
 use std::{
     env::args,
     net::{SocketAddr, TcpListener},
@@ -84,6 +85,18 @@ async fn main() -> Result<()> {
                 )
                 .layer(
                     TraceLayer::new_for_http()
+                        .make_span_with(|request: &Request<_>| {
+                            let matched_path = request
+                                .extensions()
+                                .get::<MatchedPath>()
+                                .map(MatchedPath::as_str);
+
+                            tracing::info_span!(
+                                "http_request",
+                                method = ?request.method(),
+                                matched_path,
+                            )
+                        })
                         .on_response(trace::DefaultOnResponse::new().level(Level::INFO)),
                 );