mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 21:42:34 +00:00
Add user agent to request log
This commit is contained in:
3
Cargo.lock
generated
3
Cargo.lock
generated
@@ -2644,8 +2644,11 @@ dependencies = [
|
|||||||
"argon2",
|
"argon2",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"axum",
|
"axum",
|
||||||
|
"axum-extra",
|
||||||
"clap",
|
"clap",
|
||||||
"figment",
|
"figment",
|
||||||
|
"headers",
|
||||||
|
"http",
|
||||||
"opentelemetry",
|
"opentelemetry",
|
||||||
"opentelemetry-otlp",
|
"opentelemetry-otlp",
|
||||||
"opentelemetry-semantic-conventions",
|
"opentelemetry-semantic-conventions",
|
||||||
|
|||||||
@@ -173,3 +173,6 @@ rustical_dav_push.workspace = true
|
|||||||
rustical_oidc.workspace = true
|
rustical_oidc.workspace = true
|
||||||
quick-xml.workspace = true
|
quick-xml.workspace = true
|
||||||
tower-http.workspace = true
|
tower-http.workspace = true
|
||||||
|
axum-extra.workspace = true
|
||||||
|
headers.workspace = true
|
||||||
|
http.workspace = true
|
||||||
|
|||||||
11
src/app.rs
11
src/app.rs
@@ -1,7 +1,8 @@
|
|||||||
use axum::Router;
|
use axum::Router;
|
||||||
use axum::extract::Request;
|
use axum::extract::Request;
|
||||||
use axum::response::Response;
|
use axum::response::Response;
|
||||||
use reqwest::StatusCode;
|
use headers::{HeaderMapExt, UserAgent};
|
||||||
|
use http::StatusCode;
|
||||||
use rustical_caldav::caldav_router;
|
use rustical_caldav::caldav_router;
|
||||||
use rustical_carddav::carddav_router;
|
use rustical_carddav::carddav_router;
|
||||||
use rustical_frontend::nextcloud_login::{NextcloudFlows, nextcloud_login_router};
|
use rustical_frontend::nextcloud_login::{NextcloudFlows, nextcloud_login_router};
|
||||||
@@ -80,20 +81,24 @@ pub fn make_app<AS: AddressbookStore, CS: CalendarStore, S: SubscriptionStore>(
|
|||||||
.make_span_with(|request: &Request| {
|
.make_span_with(|request: &Request| {
|
||||||
tracing::info_span!(
|
tracing::info_span!(
|
||||||
"http-request",
|
"http-request",
|
||||||
status_code = tracing::field::Empty,
|
status = tracing::field::Empty,
|
||||||
otel.name = tracing::field::display(format!(
|
otel.name = tracing::field::display(format!(
|
||||||
"{} {}",
|
"{} {}",
|
||||||
request.method(),
|
request.method(),
|
||||||
request.uri()
|
request.uri()
|
||||||
)),
|
)),
|
||||||
|
ua = tracing::field::Empty,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
.on_request(|req: &Request, span: &Span| {
|
.on_request(|req: &Request, span: &Span| {
|
||||||
span.record("method", display(req.method()));
|
span.record("method", display(req.method()));
|
||||||
span.record("path", display(req.uri()));
|
span.record("path", display(req.uri()));
|
||||||
|
if let Some(ua) = req.headers().typed_get::<UserAgent>() {
|
||||||
|
span.record("ua", display(ua));
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.on_response(|response: &Response, _latency: Duration, span: &Span| {
|
.on_response(|response: &Response, _latency: Duration, span: &Span| {
|
||||||
span.record("status_code", display(response.status()));
|
span.record("status", display(response.status()));
|
||||||
if response.status().is_server_error() {
|
if response.status().is_server_error() {
|
||||||
tracing::error!("server error");
|
tracing::error!("server error");
|
||||||
} else if response.status().is_client_error() {
|
} else if response.status().is_client_error() {
|
||||||
|
|||||||
Reference in New Issue
Block a user