Breaking changes
- ref(tracing): rework tracing to Sentry span name/op conversion (#887) by @lcian
- The
tracing
integration now uses the tracing span name as the Sentry span name by default. - Before this change, the span name would be set based on the
tracing
span target (<module>::<function>
when using thetracing::instrument
macro). - The
tracing
integration now uses<span target>::<span name>
as the default Sentry span op (i.e.<module>::<function>
when usingtracing::instrument
). - Before this change, the span op would be set based on the
tracing
span name. - Read below to learn how to customize the span name and op.
- When upgrading, please ensure to adapt any queries, metrics or dashboards to use the new span names/ops.
- The
- ref(tracing): use standard code attributes (#899) by @lcian
- Logs now carry the attributes
code.module.name
,code.file.path
andcode.line.number
standardized in OTEL to surface the respective information, in contrast with the previously senttracing.module_path
,tracing.file
andtracing.line
.
- Logs now carry the attributes
- fix(actix): capture only server errors (#877) by @lcian
- The Actix integration now properly honors the
capture_server_errors
option (enabled by default), capturing errors returned by middleware only if they are server errors (HTTP status code 5xx). - Previously, if a middleware were to process the request after the Sentry middleware and return an error, our middleware would always capture it and send it to Sentry, regardless if it was a client, server or some other kind of error.
- With this change, we capture errors returned by middleware only if those errors can be classified as server errors.
- There is no change in behavior when it comes to errors returned by services, in which case the Sentry middleware only captures server errors exclusively.
- The Actix integration now properly honors the
- fix: send trace origin correctly (#906) by @lcian
TraceContext
now has an additional fieldorigin
, used to report which integration created a transaction.
Behavioral changes
- feat(tracing): send both breadcrumbs and logs by default (#878) by @lcian
- If the
logs
feature flag is enabled, andenable_logs: true
is set on your client options, the default Sentrytracing
layer now sends logs for all events at or above INFO.
- If the
Features
-
ref(tracing): rework tracing to Sentry span name/op conversion (#887) by @lcian
- Additional special fields have been added that allow overriding certain data on the Sentry span:
sentry.op
: override the Sentry span op.sentry.name
: override the Sentry span name.sentry.trace
: given a string matching a validsentry-trace
header (sent automatically by client SDKs), continues the distributed trace instead of starting a new one. If the value is not a validsentry-trace
header or a trace is already started, this value is ignored.
sentry.op
andsentry.name
can also be applied retroactively by declaring fields with valuetracing::field::Empty
and then recorded usingtracing::Span::record
.- Example usage:
#[tracing::instrument(skip_all, fields( sentry.op = "http.server", sentry.name = "GET /payments", sentry.trace = headers.get("sentry-trace").unwrap_or(&"".to_owned()), ))] async fn handle_request(headers: std::collections::HashMap<String, String>) { // ... }
- Additional attributes are sent along with each span by default:
sentry.tracing.target
: corresponds to thetracing
span'smetadata.target()
code.module.name
,code.file.path
,code.line.number
- Additional special fields have been added that allow overriding certain data on the Sentry span:
-
feat(core): add Response context (#874) by @lcian
- The
Response
context can now be attached to events, to include information about HTTP responses such as headers, cookies and status code. - Example:
let mut event = Event::new(); let response = ResponseContext { cookies: Some(r#""csrftoken": "1234567""#.to_owned()), headers: Some(headers_map), status_code: Some(500), body_size: Some(15), data: Some("Invalid request"), }; event .contexts .insert("response".to_owned(), response.into());
- The
Fixes
- build(panic): Fix build without other dependencies (#883) by @liskin
- The
sentry-panic
crate now builds successfully when used as a standalone dependency.
- The
- fix(transport): add rate limits for logs (#894) by @giortzisg