From c2f5c39abf697de9624d52fa99653c91565194dd Mon Sep 17 00:00:00 2001 From: lcian Date: Fri, 1 Aug 2025 14:15:58 +0200 Subject: [PATCH 1/7] feat(tracing): send both breadcrumbs and logs by default --- sentry-tracing/src/layer.rs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/sentry-tracing/src/layer.rs b/sentry-tracing/src/layer.rs index efc4da54..b7583358 100644 --- a/sentry-tracing/src/layer.rs +++ b/sentry-tracing/src/layer.rs @@ -78,6 +78,19 @@ pub fn default_event_filter(metadata: &Metadata) -> EventFilter { } } +/// The default event filter, with logs. +/// +/// By default, an exception event is captured for `error`, a breadcrumb for +/// `warning` and `info`, and `debug` and `trace` logs are ignored. +/// Additionally, a log is captured for `info`, `warning` and `error`. +pub fn default_event_filter_with_logs(metadata: &Metadata) -> EventFilter { + match metadata.level() { + &Level::ERROR => EventFilter::Event | EventFilter::Log, + &Level::WARN | &Level::INFO => EventFilter::Breadcrumb | EventFilter::Log, + &Level::DEBUG | &Level::TRACE => EventFilter::Ignore, + } +} + /// The default span filter. /// /// By default, spans at the `error`, `warning`, and `info` @@ -162,8 +175,20 @@ where S: Subscriber + for<'a> LookupSpan<'a>, { fn default() -> Self { + let enable_logs = { + #[cfg(feature = "logs")] + if let Some(client) = sentry_core::Hub::current().client() { + return client.options().enable_logs; + } + false + }; + Self { - event_filter: Box::new(default_event_filter), + event_filter: Box::new(if enable_logs { + default_event_filter + } else { + default_event_filter_with_logs + }), event_mapper: None, span_filter: Box::new(default_span_filter), From 4c6560a6455709ebd937d87de67b0626fe17d6ad Mon Sep 17 00:00:00 2001 From: lcian Date: Fri, 1 Aug 2025 14:25:39 +0200 Subject: [PATCH 2/7] changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8e9b12d..7db367da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## Unreleased + +- feat(tracing): send both breadcrumbs and logs by default ([#878](https://github.com/getsentry/sentry-rust/pull/878)) + - If the `logs` feature flag is enabled, and `enable_logs: true` is set on your client options, the default Sentry `tracing` layer now sends logs for all events at or above INFO. + ## 0.42.0 ### Features From 480a59c326261bdc3fa8b57b605be0f7a5e427ca Mon Sep 17 00:00:00 2001 From: lcian Date: Fri, 1 Aug 2025 14:29:54 +0200 Subject: [PATCH 3/7] fix --- sentry-tracing/src/layer.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sentry-tracing/src/layer.rs b/sentry-tracing/src/layer.rs index b7583358..232a8fc1 100644 --- a/sentry-tracing/src/layer.rs +++ b/sentry-tracing/src/layer.rs @@ -177,10 +177,16 @@ where fn default() -> Self { let enable_logs = { #[cfg(feature = "logs")] - if let Some(client) = sentry_core::Hub::current().client() { - return client.options().enable_logs; + { + sentry_core::Hub::current() + .client() + .map(|client| client.options().enable_logs) + .unwrap_or(false) + } + #[cfg(not(feature = "logs"))] + { + false } - false }; Self { From 855354882bdd61ebb24d9480439f4136a22424e0 Mon Sep 17 00:00:00 2001 From: lcian Date: Thu, 11 Sep 2025 14:43:02 +0200 Subject: [PATCH 4/7] false to true --- sentry-tracing/src/layer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry-tracing/src/layer.rs b/sentry-tracing/src/layer.rs index 232a8fc1..aa37146d 100644 --- a/sentry-tracing/src/layer.rs +++ b/sentry-tracing/src/layer.rs @@ -181,7 +181,7 @@ where sentry_core::Hub::current() .client() .map(|client| client.options().enable_logs) - .unwrap_or(false) + .unwrap_or(true) } #[cfg(not(feature = "logs"))] { From aa6ac1ce5dd09a0f06ce77133abfe6d49f8feed0 Mon Sep 17 00:00:00 2001 From: lcian Date: Thu, 11 Sep 2025 14:46:37 +0200 Subject: [PATCH 5/7] fix --- sentry-tracing/src/layer.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentry-tracing/src/layer.rs b/sentry-tracing/src/layer.rs index aa37146d..7cac0fe4 100644 --- a/sentry-tracing/src/layer.rs +++ b/sentry-tracing/src/layer.rs @@ -191,9 +191,9 @@ where Self { event_filter: Box::new(if enable_logs { - default_event_filter - } else { default_event_filter_with_logs + } else { + default_event_filter }), event_mapper: None, From ba18f42bfefefd50e67a33337946bdd8a2c9cef1 Mon Sep 17 00:00:00 2001 From: lcian Date: Thu, 11 Sep 2025 14:49:37 +0200 Subject: [PATCH 6/7] comment --- sentry-tracing/src/layer.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sentry-tracing/src/layer.rs b/sentry-tracing/src/layer.rs index 7cac0fe4..17d0f95a 100644 --- a/sentry-tracing/src/layer.rs +++ b/sentry-tracing/src/layer.rs @@ -181,7 +181,8 @@ where sentry_core::Hub::current() .client() .map(|client| client.options().enable_logs) - .unwrap_or(true) + .unwrap_or(true) // default to true if we don't know, client will drop the + // logs later if it was actually `enable_logs: false` } #[cfg(not(feature = "logs"))] { From 84f99cad4eca49210b1b865d34c1799eb8d1c32f Mon Sep 17 00:00:00 2001 From: lcian Date: Thu, 11 Sep 2025 14:54:04 +0200 Subject: [PATCH 7/7] improve --- sentry-tracing/src/layer.rs | 40 +++++++------------------------------ 1 file changed, 7 insertions(+), 33 deletions(-) diff --git a/sentry-tracing/src/layer.rs b/sentry-tracing/src/layer.rs index 17d0f95a..5d3c59ec 100644 --- a/sentry-tracing/src/layer.rs +++ b/sentry-tracing/src/layer.rs @@ -72,21 +72,14 @@ impl From> for CombinedEventMapping { /// `warning` and `info`, and `debug` and `trace` logs are ignored. pub fn default_event_filter(metadata: &Metadata) -> EventFilter { match metadata.level() { - &Level::ERROR => EventFilter::Event, - &Level::WARN | &Level::INFO => EventFilter::Breadcrumb, - &Level::DEBUG | &Level::TRACE => EventFilter::Ignore, - } -} - -/// The default event filter, with logs. -/// -/// By default, an exception event is captured for `error`, a breadcrumb for -/// `warning` and `info`, and `debug` and `trace` logs are ignored. -/// Additionally, a log is captured for `info`, `warning` and `error`. -pub fn default_event_filter_with_logs(metadata: &Metadata) -> EventFilter { - match metadata.level() { + #[cfg(feature = "logs")] &Level::ERROR => EventFilter::Event | EventFilter::Log, + #[cfg(not(feature = "logs"))] + &Level::ERROR => EventFilter::Event, + #[cfg(feature = "logs")] &Level::WARN | &Level::INFO => EventFilter::Breadcrumb | EventFilter::Log, + #[cfg(not(feature = "logs"))] + &Level::WARN | &Level::INFO => EventFilter::Breadcrumb, &Level::DEBUG | &Level::TRACE => EventFilter::Ignore, } } @@ -175,27 +168,8 @@ where S: Subscriber + for<'a> LookupSpan<'a>, { fn default() -> Self { - let enable_logs = { - #[cfg(feature = "logs")] - { - sentry_core::Hub::current() - .client() - .map(|client| client.options().enable_logs) - .unwrap_or(true) // default to true if we don't know, client will drop the - // logs later if it was actually `enable_logs: false` - } - #[cfg(not(feature = "logs"))] - { - false - } - }; - Self { - event_filter: Box::new(if enable_logs { - default_event_filter_with_logs - } else { - default_event_filter - }), + event_filter: Box::new(default_event_filter), event_mapper: None, span_filter: Box::new(default_span_filter),