diff --git a/.github/workflows/general.yml b/.github/workflows/general.yml index a2be635..6caccb3 100644 --- a/.github/workflows/general.yml +++ b/.github/workflows/general.yml @@ -20,10 +20,10 @@ jobs: # Fail the build if there are warnings RUSTFLAGS: "-D warnings" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Cache dependencies id: cache-dependencies - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ~/.cargo/registry @@ -56,10 +56,10 @@ jobs: - opentelemetry_0_18 - opentelemetry_0_19 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Cache dependencies id: cache-dependencies - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ~/.cargo/registry @@ -80,7 +80,7 @@ jobs: name: Rustfmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -95,7 +95,7 @@ jobs: name: Clippy runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: toolchain: stable diff --git a/src/middleware.rs b/src/middleware.rs index a820511..3c1a359 100644 --- a/src/middleware.rs +++ b/src/middleware.rs @@ -16,7 +16,7 @@ use tracing::Span; /// /// # Usage /// -/// Register `TracingLogger` as a middleware for your application using `.wrap` on `App`. +/// Register `TracingLogger` as a middleware for your application using `.wrap` on `App`. /// In this example we add a [`tracing::Subscriber`] to output structured logs to the console. /// /// ```rust @@ -119,7 +119,7 @@ where fn new_transform(&self, service: S) -> Self::Future { ready(Ok(TracingLoggerMiddleware { service, - root_span_builder: std::marker::PhantomData::default(), + root_span_builder: std::marker::PhantomData, })) } } @@ -240,12 +240,12 @@ fn emit_event_on_error(outcome: &Result, actix_we Ok(response) => { if let Some(err) = response.response().error() { // use the status code already constructed for the outgoing HTTP response - emit_error_event(err.as_response_error(), response.status()) + emit_error_event(err.as_response_error(), response.status()); } } Err(error) => { let response_error = error.as_response_error(); - emit_error_event(response_error, response_error.status_code()) + emit_error_event(response_error, response_error.status_code()); } } } diff --git a/src/root_span_macro.rs b/src/root_span_macro.rs index c1c191b..fc8d2cd 100644 --- a/src/root_span_macro.rs +++ b/src/root_span_macro.rs @@ -81,6 +81,11 @@ macro_rules! root_span { .get("User-Agent") .map(|h| h.to_str().unwrap_or("")) .unwrap_or(""); + let referer = $request + .headers() + .get("Referer") + .map(|h| h.to_str().unwrap_or("")) + .unwrap_or(""); let http_route: std::borrow::Cow<'static, str> = $request .match_pattern() .map(Into::into) @@ -101,6 +106,7 @@ macro_rules! root_span { http.host = %connection_info.host(), http.client_ip = %$request.connection_info().realip_remote_addr().unwrap_or(""), http.user_agent = %user_agent, + http.referer = %referer, http.target = %$request.uri().path_and_query().map(|p| p.as_str()).unwrap_or(""), http.status_code = $crate::root_span_macro::private::tracing::field::Empty, otel.name = %format!("HTTP {} {}", http_method, http_route), @@ -216,6 +222,6 @@ pub mod private { pub fn get_request_id(request: &ServiceRequest) -> RequestId { use actix_web::HttpMessage; - request.extensions().get::().cloned().unwrap() + request.extensions().get::().copied().unwrap() } }