mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 13:32:16 +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",
|
||||
"async-trait",
|
||||
"axum",
|
||||
"axum-extra",
|
||||
"clap",
|
||||
"figment",
|
||||
"headers",
|
||||
"http",
|
||||
"opentelemetry",
|
||||
"opentelemetry-otlp",
|
||||
"opentelemetry-semantic-conventions",
|
||||
|
||||
@@ -173,3 +173,6 @@ rustical_dav_push.workspace = true
|
||||
rustical_oidc.workspace = true
|
||||
quick-xml.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::extract::Request;
|
||||
use axum::response::Response;
|
||||
use reqwest::StatusCode;
|
||||
use headers::{HeaderMapExt, UserAgent};
|
||||
use http::StatusCode;
|
||||
use rustical_caldav::caldav_router;
|
||||
use rustical_carddav::carddav_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| {
|
||||
tracing::info_span!(
|
||||
"http-request",
|
||||
status_code = tracing::field::Empty,
|
||||
status = tracing::field::Empty,
|
||||
otel.name = tracing::field::display(format!(
|
||||
"{} {}",
|
||||
request.method(),
|
||||
request.uri()
|
||||
)),
|
||||
ua = tracing::field::Empty,
|
||||
)
|
||||
})
|
||||
.on_request(|req: &Request, span: &Span| {
|
||||
span.record("method", display(req.method()));
|
||||
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| {
|
||||
span.record("status_code", display(response.status()));
|
||||
span.record("status", display(response.status()));
|
||||
if response.status().is_server_error() {
|
||||
tracing::error!("server error");
|
||||
} else if response.status().is_client_error() {
|
||||
|
||||
Reference in New Issue
Block a user