From bd1b4ac5c1e5e23ae73617eb2704b5dd55c4aaae Mon Sep 17 00:00:00 2001 From: xphoniex Date: Mon, 26 Dec 2022 12:02:12 +0000 Subject: [PATCH] httpd: Use `TraceLayer` on uppermost router This allows prefix of each route e.g. `/api/*` to be visible in logs. Signed-off-by: xphoniex --- radicle-httpd/src/api.rs | 24 ------------------------ radicle-httpd/src/lib.rs | 22 +++++++++++----------- 2 files changed, 11 insertions(+), 35 deletions(-) diff --git a/radicle-httpd/src/api.rs b/radicle-httpd/src/api.rs index f87142d8..93ff3004 100644 --- a/radicle-httpd/src/api.rs +++ b/radicle-httpd/src/api.rs @@ -2,19 +2,15 @@ use std::collections::HashMap; use std::sync::Arc; use std::time::Duration; -use axum::body::{Body, BoxBody}; use axum::http::header::{AUTHORIZATION, CONTENT_TYPE}; use axum::http::Method; use axum::response::{IntoResponse, Json}; use axum::routing::get; use axum::{Extension, Router}; -use hyper::http::{Request, Response}; use serde::{Deserialize, Serialize}; use serde_json::json; use tokio::sync::RwLock; use tower_http::cors::{self, CorsLayer}; -use tower_http::trace::TraceLayer; -use tracing::Span; use radicle::cob::issue::Issues; use radicle::identity::Id; @@ -77,26 +73,6 @@ pub fn router(ctx: Context) -> Router { .allow_methods([Method::GET, Method::POST, Method::PUT]) .allow_headers([CONTENT_TYPE, AUTHORIZATION]), ) - .layer( - TraceLayer::new_for_http() - .make_span_with(|request: &Request| { - tracing::info_span!( - "request", - method = %request.method(), - uri = %request.uri(), - status = tracing::field::Empty, - latency = tracing::field::Empty, - ) - }) - .on_response( - |response: &Response, latency: Duration, span: &Span| { - span.record("status", &tracing::field::debug(response.status())); - span.record("latency", &tracing::field::debug(latency)); - - tracing::info!("Processed"); - }, - ), - ) } async fn root_handler(Extension(ctx): Extension) -> impl IntoResponse { diff --git a/radicle-httpd/src/lib.rs b/radicle-httpd/src/lib.rs index 065e7f45..b89c4d91 100644 --- a/radicle-httpd/src/lib.rs +++ b/radicle-httpd/src/lib.rs @@ -55,7 +55,16 @@ pub async fn run(options: Options) -> anyhow::Result<()> { let git_router = Router::new() .route("/:project/*request", any(git_handler)) - .layer(Extension(profile.clone())) + .layer(Extension(profile.clone())); + + let ctx = api::Context::new(profile); + let api_router = api::router(ctx); + + tracing::info!("listening on http://{}", options.listen); + + let app = Router::new() + .merge(git_router) + .nest("/api", api_router) .layer( TraceLayer::new_for_http() .make_span_with(|request: &Request| { @@ -75,16 +84,7 @@ pub async fn run(options: Options) -> anyhow::Result<()> { tracing::info!("Processed"); }, ), - ); - - let ctx = api::Context::new(profile); - let api_router = api::router(ctx); - - tracing::info!("listening on http://{}", options.listen); - - let app = Router::new() - .merge(git_router) - .nest("/api", api_router) + ) .into_make_service_with_connect_info::(); axum::Server::bind(&options.listen)