Skip to content

Commit 88d3d49

Browse files
committed
feat: add server socket address to logs in API
``` 2024-12-26T09:07:18.149759Z ERROR API: response latency_ms=0 status_code=500 Internal Server Error server_socket_addr=127.0.0.1:41579 request_id=44d8c2f6-630d-4eab-a399-65aed1dbc8ab ```
1 parent ce9f388 commit 88d3d49

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

src/servers/apis/routes.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
//!
66
//! All the API routes have the `/api` prefix and the version number as the
77
//! first path segment. For example: `/api/v1/torrents`.
8+
use std::net::SocketAddr;
89
use std::sync::Arc;
910
use std::time::Duration;
1011

@@ -35,7 +36,7 @@ use crate::servers::logging::Latency;
3536
/// Add all API routes to the router.
3637
#[allow(clippy::needless_pass_by_value)]
3738
#[instrument(skip(tracker, access_tokens))]
38-
pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>) -> Router {
39+
pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>, server_socket_addr: SocketAddr) -> Router {
3940
let router = Router::new();
4041

4142
let api_url_prefix = "/api";
@@ -68,7 +69,7 @@ pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>) -> Router
6869
target: API_LOG_TARGET,
6970
tracing::Level::INFO, %method, %uri, %request_id, "request");
7071
})
71-
.on_response(|response: &Response, latency: Duration, span: &Span| {
72+
.on_response(move |response: &Response, latency: Duration, span: &Span| {
7273
let latency_ms = latency.as_millis();
7374
let status_code = response.status();
7475
let request_id = response
@@ -82,20 +83,20 @@ pub fn router(tracker: Arc<Tracker>, access_tokens: Arc<AccessTokens>) -> Router
8283
if status_code.is_server_error() {
8384
tracing::event!(
8485
target: API_LOG_TARGET,
85-
tracing::Level::ERROR, %latency_ms, %status_code, %request_id, "response");
86+
tracing::Level::ERROR, %latency_ms, %status_code, %server_socket_addr, %request_id, "response");
8687
} else {
8788
tracing::event!(
8889
target: API_LOG_TARGET,
89-
tracing::Level::INFO, %latency_ms, %status_code, %request_id, "response");
90+
tracing::Level::INFO, %latency_ms, %status_code, %server_socket_addr, %request_id, "response");
9091
}
9192
})
9293
.on_failure(
93-
|failure_classification: ServerErrorsFailureClass, latency: Duration, _span: &Span| {
94+
move |failure_classification: ServerErrorsFailureClass, latency: Duration, _span: &Span| {
9495
let latency = Latency::new(LatencyUnit::Millis, latency);
9596

9697
tracing::event!(
9798
target: API_LOG_TARGET,
98-
tracing::Level::ERROR, %failure_classification, %latency, "response failed");
99+
tracing::Level::ERROR, %failure_classification, %latency, %server_socket_addr, "response failed");
99100
},
100101
),
101102
)

src/servers/apis/server.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,11 @@ impl Launcher {
243243
tx_start: Sender<Started>,
244244
rx_halt: Receiver<Halted>,
245245
) -> BoxFuture<'static, ()> {
246-
let router = router(tracker, access_tokens);
247246
let socket = std::net::TcpListener::bind(self.bind_to).expect("Could not bind tcp_listener to address.");
248247
let address = socket.local_addr().expect("Could not get local_addr from tcp_listener.");
249248

249+
let router = router(tracker, access_tokens, address);
250+
250251
let handle = Handle::new();
251252

252253
tokio::task::spawn(graceful_shutdown(

0 commit comments

Comments
 (0)