Skip to content

Commit 6401cfc

Browse files
authored
refactor(tracing): remove EventFilter::exception and always attach exception (#768)
* feat(tracing): attach errors to warning events and breadcrumbs * improve
1 parent 2488671 commit 6401cfc

File tree

2 files changed

+19
-29
lines changed

2 files changed

+19
-29
lines changed

sentry-tracing/src/converters.rs

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,27 @@ where
150150
S: Subscriber + for<'a> LookupSpan<'a>,
151151
{
152152
let (message, visitor) = extract_event_data_with_context(event, ctx.into());
153+
154+
let FieldVisitor {
155+
exceptions,
156+
mut json_values,
157+
} = visitor;
158+
159+
let errors = exceptions
160+
.iter()
161+
.rev()
162+
.filter_map(|x| x.value.as_ref().map(|v| format!("{}: {}", x.ty, *v)))
163+
.collect::<Vec<String>>();
164+
if !errors.is_empty() {
165+
json_values.insert("errors".to_owned(), errors.into());
166+
}
167+
153168
Breadcrumb {
154169
category: Some(event.metadata().target().to_owned()),
155170
ty: "log".into(),
156171
level: convert_tracing_level(event.metadata().level()),
157172
message,
158-
data: visitor.json_values,
173+
data: json_values,
159174
..Default::default()
160175
}
161176
}
@@ -217,31 +232,11 @@ fn contexts_from_event(
217232
context
218233
}
219234

220-
/// Creates an [`Event`] from a given [`tracing_core::Event`]
235+
/// Creates an [`Event`] (possibly carrying an exception) from a given [`tracing_core::Event`]
221236
pub fn event_from_event<'context, S>(
222237
event: &tracing_core::Event,
223238
ctx: impl Into<Option<Context<'context, S>>>,
224239
) -> Event<'static>
225-
where
226-
S: Subscriber + for<'a> LookupSpan<'a>,
227-
{
228-
let (message, mut visitor) = extract_event_data_with_context(event, ctx.into());
229-
230-
Event {
231-
logger: Some(event.metadata().target().to_owned()),
232-
level: convert_tracing_level(event.metadata().level()),
233-
message,
234-
tags: tags_from_event(&mut visitor.json_values),
235-
contexts: contexts_from_event(event, visitor.json_values),
236-
..Default::default()
237-
}
238-
}
239-
240-
/// Creates an exception [`Event`] from a given [`tracing_core::Event`]
241-
pub fn exception_from_event<'context, S>(
242-
event: &tracing_core::Event,
243-
ctx: impl Into<Option<Context<'context, S>>>,
244-
) -> Event<'static>
245240
where
246241
S: Subscriber + for<'a> LookupSpan<'a>,
247242
{

sentry-tracing/src/layer.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ pub enum EventFilter {
2020
Ignore,
2121
/// Create a [`Breadcrumb`] from this [`Event`]
2222
Breadcrumb,
23-
/// Create a message [`sentry_core::protocol::Event`] from this [`Event`]
23+
/// Create a [`sentry_core::protocol::Event`] from this [`Event`]
2424
Event,
25-
/// Create an exception [`sentry_core::protocol::Event`] from this [`Event`]
26-
Exception,
2725
}
2826

2927
/// The type of data Sentry should ingest for a [`Event`]
@@ -44,7 +42,7 @@ pub enum EventMapping {
4442
/// `warning` and `info`, and `debug` and `trace` logs are ignored.
4543
pub fn default_event_filter(metadata: &Metadata) -> EventFilter {
4644
match metadata.level() {
47-
&Level::ERROR => EventFilter::Exception,
45+
&Level::ERROR => EventFilter::Event,
4846
&Level::WARN | &Level::INFO => EventFilter::Breadcrumb,
4947
&Level::DEBUG | &Level::TRACE => EventFilter::Ignore,
5048
}
@@ -217,9 +215,6 @@ where
217215
EventMapping::Breadcrumb(breadcrumb_from_event(event, span_ctx))
218216
}
219217
EventFilter::Event => EventMapping::Event(event_from_event(event, span_ctx)),
220-
EventFilter::Exception => {
221-
EventMapping::Event(exception_from_event(event, span_ctx))
222-
}
223218
}
224219
}
225220
};

0 commit comments

Comments
 (0)