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 diff --git a/sentry-tracing/src/layer.rs b/sentry-tracing/src/layer.rs index efc4da54..232a8fc1 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,26 @@ 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(false) + } + #[cfg(not(feature = "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),