File zeroclaw-gateway-trace.patch of Package zeroclaw
commit 736a14b5bdea5b9654f9e0f09cf0595923c53699
Author: Oleksandr Ostrenko <openbuildservice@ostrenko.dev>
Date: Sat Mar 28 16:48:51 2026 +0100
Enable route tracing in gateway server
diff --git a/Cargo.lock b/Cargo.lock
index 5884a368a..36c56f6c6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -636,6 +636,7 @@ dependencies = [
"tower",
"tower-layer",
"tower-service",
+ "tracing",
]
[[package]]
@@ -654,6 +655,7 @@ dependencies = [
"sync_wrapper",
"tower-layer",
"tower-service",
+ "tracing",
]
[[package]]
@@ -9786,6 +9788,7 @@ dependencies = [
"tower",
"tower-layer",
"tower-service",
+ "tracing",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index ff2a74d2d..e4f63d4af 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -168,11 +168,11 @@ mail-parser = "0.11.2"
async-imap = { version = "0.11",features = ["runtime-tokio"], default-features = false }
# HTTP server (gateway) — replaces raw TCP for proper HTTP/1.1 compliance
-axum = { version = "0.8", default-features = false, features = ["http1", "json", "tokio", "query", "ws", "macros"] }
+axum = { version = "0.8", default-features = false, features = ["http1", "json", "tokio", "query", "ws", "macros", "tracing"] }
hyper = { version = "1", features = ["http1", "server"] }
hyper-util = { version = "0.1", features = ["tokio", "server-auto", "server-graceful"] }
tower = { version = "0.5", default-features = false, features = ["util"] }
-tower-http = { version = "0.6", default-features = false, features = ["limit", "timeout"] }
+tower-http = { version = "0.6", default-features = false, features = ["limit", "timeout", "trace"] }
http-body-util = "0.1"
# Embed frontend assets into binary (web dashboard)
diff --git a/src/gateway/mod.rs b/src/gateway/mod.rs
index aeae51f87..f796b7e83 100644
--- a/src/gateway/mod.rs
+++ b/src/gateway/mod.rs
@@ -53,6 +53,7 @@ use std::sync::Arc;
use std::time::{Duration, Instant};
use tower_http::limit::RequestBodyLimitLayer;
use tower_http::timeout::TimeoutLayer;
+use tower_http::trace::TraceLayer;
use uuid::Uuid;
/// Maximum request body size (64KB) — prevents memory exhaustion
@@ -1029,9 +1030,9 @@ pub async fn run_gateway(host: &str, port: u16, config: Config) -> Result<()> {
Router::new().nest(prefix, inner).route(
&format!("{prefix}/"),
get(|| async move { axum::response::Redirect::permanent(&redirect_target) }),
- )
+ ).layer(TraceLayer::new_for_http())
} else {
- inner
+ inner.layer(TraceLayer::new_for_http())
};
// ── TLS / mTLS setup ───────────────────────────────────────────