Skip to content

Instantly share code, notes, and snippets.

@carlosm27
Created April 18, 2023 23:53
Show Gist options
  • Save carlosm27/64a004546d8de1fa89d583bfca6cba25 to your computer and use it in GitHub Desktop.
Save carlosm27/64a004546d8de1fa89d583bfca6cba25 to your computer and use it in GitHub Desktop.
Adding trace layer
...
use tower_http::trace::{self, TraceLayer};
use tracing::Level;
#[tokio::main]
async fn main() {
tracing_subscriber::registry()
.with(tracing_subscriber::fmt::layer())
.init();
let router_svc = Router::new()
.route("/", get(|| async { "Hello, World!" }))
.layer(
TraceLayer::new_for_http()
.make_span_with(
trace::DefaultMakeSpan::new()
.level(Level::INFO)
)
.on_response(
trace::DefaultOnResponse::new()
.level(Level::INFO)),
);
let service = tower::service_fn(move |req: Request<Body>| {
let router_svc = router_svc.clone();
async move {
if req.method() == Method::CONNECT {
proxy(req).await
} else {
router_svc.oneshot(req).await.map_err(|err| match err {})
}
}
});
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
tracing::debug!("listening on {}", addr);
axum::Server::bind(&addr)
.http1_preserve_header_case(true)
.http1_title_case_headers(true)
.serve(Shared::new(service))
.await
.unwrap();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment