0.43.0
Breaking changes
- ref(tracing): rework tracing to Sentry span name/op conversion (#887) by @lcian
- The
tracingintegration 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
tracingspan target (<module>::<function>when using thetracing::instrumentmacro). - The
tracingintegration 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
tracingspan 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.pathandcode.line.numberstandardized in OTEL to surface the respective information, in contrast with the previously senttracing.module_path,tracing.fileandtracing.line.
- Logs now carry the attributes
- fix(actix): capture only server errors (#877) by @lcian
- The Actix integration now properly honors the
capture_server_errorsoption (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
TraceContextnow 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
logsfeature flag is enabled, andenable_logs: trueis set on your client options, the default Sentrytracinglayer 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-traceheader (sent automatically by client SDKs), continues the distributed trace instead of starting a new one. If the value is not a validsentry-traceheader or a trace is already started, this value is ignored.
sentry.opandsentry.namecan also be applied retroactively by declaring fields with valuetracing::field::Emptyand 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 thetracingspan'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
Responsecontext 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-paniccrate now builds successfully when used as a standalone dependency.
- The
- fix(transport): add rate limits for logs (#894) by @giortzisg