Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: getsentry/sentry-rust

0.43.0

24 Sep 09:26
Compare
Choose a tag to compare

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 the tracing::instrument macro).
    • The tracing integration now uses <span target>::<span name> as the default Sentry span op (i.e. <module>::<function> when using tracing::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.
  • ref(tracing): use standard code attributes (#899) by @lcian
    • Logs now carry the attributes code.module.name, code.file.path and code.line.number standardized in OTEL to surface the respective information, in contrast with the previously sent tracing.module_path, tracing.file and tracing.line.
  • 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.
  • fix: send trace origin correctly (#906) by @lcian
    • TraceContext now has an additional field origin, 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, 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.

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 valid sentry-trace header (sent automatically by client SDKs), continues the distributed trace instead of starting a new one. If the value is not a valid sentry-trace header or a trace is already started, this value is ignored.
    • sentry.op and sentry.name can also be applied retroactively by declaring fields with value tracing::field::Empty and then recorded using tracing::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 the tracing span's metadata.target()
      • code.module.name, code.file.path, code.line.number
  • 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());

Fixes

  • build(panic): Fix build without other dependencies (#883) by @liskin
    • The sentry-panic crate now builds successfully when used as a standalone dependency.
  • fix(transport): add rate limits for logs (#894) by @giortzisg

0.42.0

29 Jul 08:34
Compare
Choose a tag to compare

Features

  • feat(log): support kv feature of log (#851) by @lcian
    • Attributes added to a log record using the kv feature are now recorded as attributes on the log sent to Sentry.
  • feat(types): add all the missing supported envelope headers (#867) by @lcian
  • feat(types): add setters for envelope headers (#868) by @lcian
    • It's now possible to set all of the envelope headers supported by the protocol when constructing envelopes.
  • feat(core): add some DSC fields to transaction envelope headers (#869) by @lcian
    • The SDK now sends additional envelope headers with transactions. This should solve some extrapolation issues for span metrics.

Behavioral changes

  • feat: filter username and password in URLs (#864) by @lcian
    • Usernames and passwords that could be contained in URLs captured when using the Actix Web or axum integration are now always filtered out.
    • If the Request is created manually by the user, then these fields are not filtered out.
    • This information was already filtered by Relay, but should also be filtered by the SDK itself as a first line of defense.

Fixes

0.41.0

23 Jun 10:55
Compare
Choose a tag to compare

Breaking changes

  • feat(tracing): support combined EventFilters and EventMappings (#847) by @lcian
    • EventFilter has been changed to a bitflags struct.
    • It's now possible to map a tracing event to multiple items in Sentry by combining multiple event filters in the event_filter, e.g. tracing::Level::ERROR => EventFilter::Event | EventFilter::Log.
    • It's also possible to use EventMapping::Combined to map a tracing event to multiple items in Sentry.
    • ctx in the signatures of event_from_event, breadcrumb_from_event and log_from_event has been changed to take impl Into<Option<&'context Context<'context, S>>> to avoid cloning the Context when mapping to multiple items.

Features

  • feat(core): emit debug log when calling capture_log but logs are disabled (#849) by @lcian

Fixes

  • fix(logs): stringify u64 attributes greater than i64::MAX (#846) by @lcian

Dependencies

  • chore(deps): bump anyhow and disable its backtrace feature (#632) by @LunaBorowska

0.40.0

17 Jun 08:49
Compare
Choose a tag to compare

Logs

We've released two new integrations for Sentry structured logs, the tracing and log integration. Read below on how to start sending logs to Sentry.

Breaking changes

  • refactor(logs): apply user attributes to log regardless of send_default_pii (#843) by @lcian
    • User attributes should be applied to logs regardless of send_default_pii. Therefore, that parameter was removed from sentry_core::Scope::apply_to_log.

Features

  • feat(tracing): add support for logs (#840) by @lcian
    • To capture tracing events as Sentry structured logs, enable the logs feature of the sentry crate.
    • Then, initialize the SDK with enable_logs: true in your client options.
    • Finally, set up a custom event filter to map events to logs based on criteria such as severity. For example:
        let sentry_layer = sentry_tracing::layer().event_filter(|md| match *md.level() {
            tracing::Level::ERROR => EventFilter::Event,
            tracing::Level::TRACE => EventFilter::Ignore,
            _ => EventFilter::Log,
        });
  • feat(log): add support for logs (#841) by @lcian
    • To capture log records as Sentry structured logs, enable the logs feature of the sentry crate.
    • Then, initialize the SDK with enable_logs: true in your client options.
    • Finally, set up a custom event filter to map records to Sentry logs based on criteria such as severity. For example:
        let logger = sentry::integrations::log::SentryLogger::new().filter(|md| match md.level() {
            log::Level::Error => LogFilter::Event,
            log::Level::Trace => LogFilter::Ignore,
            _ => LogFilter::Log,
        });
  • refactor(logs): cache default attributes and add OS attributes (#842) by @lcian
    • os.name and os.version are now being attached to logs as default attributes.

Fixes

  • fix(logs): send environment in sentry.environment default attribute (#837) by @lcian

Behavioral changes

  • refactor(tracing): refactor internal code and improve docs (#839) by @lcian
    • Errors carried by breadcrumbs will now be stored in the breadcrumb data under their original field name.
    • Before, they were all stored under a single key called errors.

Dependencies

0.39.0

10 Jun 12:00
Compare
Choose a tag to compare

Logs

Support for Sentry structured logs has been added to the SDK.

  • To set up logs, enable the logs feature of the sentry crate and set enable_logs to true in your client options.
  • Then, use the logger_trace!, logger_debug!, logger_info!, logger_warn!, logger_error! and logger_fatal! macros to capture logs.
  • To filter or update logs before they are sent, you can use the before_send_log client option.
  • Please note that breaking changes could occur until the API is finalized.

Features

Behavioral changes

  • refactor(core): remove support for traceparent (#807) by @lcian
    • The SDK doesn't support parsing the traceparent distributed tracing header anymore. This means that continue_from_headers (and, as a consequence, parse_headers) will only take into account the sentry-trace header from now on.
    • If you need to continue traces based on the information in the traceparent header, please parse the information from it and then use the API to manually create the desired transaction.
  • feat(core): implement Tracing without Performance (#811) by @lcian
    • The SDK now implements Tracing without Performance, which makes it so that each Scope is associated with an object holding some tracing information.
    • This information is used as a fallback when capturing an event with tracing disabled or otherwise no ongoing span, to still allow related events to be linked by a trace.
    • A new API Scope::iter_trace_propagation_headers has been provided that will use the fallback tracing information if there is no current Span on the Scope.

Breaking changes

  • refactor: remove debug-logs feature (#820) by @lcian
    • The deprecated debug-logs feature of the sentry crate, used for the SDK's own internal logging, has been removed.

0.38.1

13 May 08:26
Compare
Choose a tag to compare

Fixes

  • build: include sentry-actix optionally when release-health is enabled (#806) by @lcian
    • sentry-actix is now being included as a dependency only when explicitly added, either as a direct dependency or through the actix feature flag of the sentry crate.
    • Due to a mistake in the Cargo.toml, it was previously being included as a dependency by default when using just the sentry crate with default features.

0.38.0

09 May 14:25
Compare
Choose a tag to compare

OpenTelemetry integration

An OpenTelemetry integration has been released. Please refer to the changelog entry below for the details.

Breaking changes

  • refactor(tracing): remove EventFilter::exception and always attach exception (#768) by @lcian
    • The EventFilter::Exception enum variant has been removed. Please use EventFilter::Event instead to achieve the same behavior.
    • Using EventFilter::Event will always attach any error struct used within the error field passed to the tracing macro, as EventFilter::Exception did previously.
    • The error field will also be attached to breadcrumbs as an errors field resembling the structure of Sentry events created from error structs.
  • fix: use release-health flag in sentry-actix and remove it from subcrates where unneeded (#787) by @lcian
    • As a follow-up from the changes in the previous release, the ClientOptions fields auto_session_tracking and session_mode are now gated behind the release-health feature flag of the sentry crate.
    • If you depend on sentry with default-features = false, you need to include the release-health feature flag to benefit from the Release Health features of Sentry and have access to the aforementioned client options.
    • The release-health feature flag is used correctly in sentry-actix to enable compilation of that subcrate when it's disabled.
    • The release-health has been removed from the sentry-tracing and sentry-tower subcrates, where it was unnecessary.
  • refactor: remove Surf transport (#766) by @lcian
    • The Surf transport has been removed as the surf crate is unmaintained and it was holding back dependency upgrades.
    • If you really want to still use Surf, you can define a custom TransportFactory and pass it as the transport in your ClientOptions

Behavioral changes

  • refactor: honor send_default_pii in sentry-actix and sentry-tower (#771) by @lcian
    • The client option send_default_pii (disabled by default) is now honored by sentry-actix and sentry-tower.
    • This means that potentially sensitive headers such as authorization, cookies, and those that usually contain the user's IP address are filtered and not sent to Sentry.
    • If you want to get back to the previous behavior and capture all headers, please set send_default_pii to true in your ClientOptions.
    • Please refer to our Data Collected page for a comprehensive view of the data collected by the SDK.
  • refactor(debug-images): force init DEBUG_META on integration init (#773) by @lcian
    • The DebugImages integration has been updated to init the DEBUG_META Lazy immediately.
    • Using this integration is known to cause issues in specific versions of the Linux kernel due to issues in a library it depends on.
    • Previously, on problematic systems the SDK would cause deadlock after capturing the first event. Now the SDK will panic on initialization instead. Please open an issue if you're affected.

Features

  • feat(otel): add OpenTelemetry SpanProcessor, Propagator, Extractor (#779) by @lcian
    • A new integration for the opentelemetry crate has been released.
    • It can be used to capture spans created using the opentelemetry API and send them to Sentry.
    • Distributed tracing is also supported, provided that the upstream/downstream services support the Sentry or W3C distributed tracing metadata format.
    • Please refer to the subcrate's README or the crate docs to see an example of setup and usage.
  • feat: expose sentry-actix as a feature of sentry (#788) by @lcian
    • sentry-actix is now exposed by the sentry crate as sentry::integrations::actix, gated behind the actix feature flag.
    • Please update your dependencies to not depend on the sentry-actix subcrate directly.

Dependencies

  • build(deps): bump openssl from 0.10.71 to 0.10.72 (#762) by @dependabot
  • build(deps): bump tokio from 1.44.1 to 1.44.2 (#763) by @dependabot
  • chore(deps): bump some dependencies and update Cargo.lock (#772) by @lcian

Various fixes & improvements

  • Replace once_cell with std::sync::LazyLock (#776) by @FalkWoldmann
  • chore: update GH issue templates for Linear compatibility (#777) by @stephanie-anderson
  • chore: update issue templates with blank issue and Discord link (#778) by @lcian
  • refactor(core): fail with message if TLS backend not available (#784) by @lcian
  • build: add sentry-opentelemetry to workspace (#789) by @lcian
  • docs: update docs including OTEL and other integrations (#790) by @lcian
  • fix(otel): fix doctests (#794) by @lcian
  • fix(otel): fix span and trace ids for distributed tracing (#801) by @lcian
  • build(otel): exclude version from circular dev-dependencies (#802) by @lcian

0.37.0

01 Apr 11:45
Compare
Choose a tag to compare

Breaking changes

  • chore(msrv): cargo update and bump MSRV to 1.81 (#754) by @lcian
    • The minimum supported Rust version has been raised to 1.81.
  • feat(core): introduce release-health feature (#749) by @pepperoni505
    • A new release-health feature flag was introduced that gates the Release Health features of Sentry.
    • This allows for compilation of the SDK on certain WASM targets.
    • Release Health features were already present and enabled with no feature flag in previous versions.
    • The new feature flag will be enabled by default when using sentry, sentry-actix, sentry-tower or sentry-tracing with the default features.
    • If you're fine-tuning your feature flags, make sure to enable release-health to get back the previous behavior.
  • ref(metrics): remove features and code related to the old metrics beta (#740) by @lcian
    • The metrics feature and the code related to it has been removed from the crate, as the Sentry backend stopped ingesting metrics a while ago.
  • Switch to MIT license (#724) by @cleptric
    • The license for the crates has been changed to MIT.

Features

  • feat(actix): capture HTTP request body (#731) by @pacifistes
    • The middleware for actix-web now supports capturing and attaching the request body to HTTP request transactions.
    • You need to enable send_default_pii in your client options for this to be enabled, and you can fine-tune the behavior using the new option max_request_body_size.
  • feat(core): transaction.set_data sets data on TraceContext (#739) by @lcian
    • transaction.set_data now sets data on TraceContext, as the SDK should not use the extra field.
  • ref(backtrace): add entries and extra logic for in-app detection (#756) by @lcian
  • feat(core): add more frames to be considered not in_app (#760) by @lcian
    • The logic used by the SDK to detect in-app stack frames has been improved. Now the SDK will mark more frames as not in-app.
    • A similar improvement has been added to the Sentry backend so that old versions of the SDK can benefit from improved in-app reporting.

Fixes

  • fix(http): Finish transaction on drop (#727) by @Dav1dde
    • Fixed a bug where the current transaction was not finished (hence not sent to Sentry) when its corresponding future was dropped, e.g. due to a panic.
  • follow #439 for actix-web. fix #680 (#737) by @pavel-rosputko
    • The HTTP request metadata is now being correctly attached to transactions when using sentry-actix.
  • fix(tracing): wrap error with synthetic mechanism only if attaching stacktrace (#755) by @lcian
    • Fixed a bug that should result in improved grouping and issue titles for events reported by sentry-tracing when not capturing stack traces.
  • fix(actix): process request in other middleware using correct Hub (#758) by @lcian
    • The subsequent middleware in the chain when processing a request now execute within the correct Hub.
  • fix(anyhow): attach stacktrace only if error provides backtrace (#759) by @lcian
    • Fixed a bug where the SDK was providing incorrect stack traces when capturing an anyhow when the backtrace feature is enabled but RUST_BACKTRACE is not set.
    • This should result in correct grouping of the affected issues.

Various fixes & improvements

Dependencies

0.36.0

07 Jan 15:46
Compare
Choose a tag to compare

Various fixes & improvements

0.35.0

29 Nov 09:30
Compare
Choose a tag to compare

Fixes:

  • Envelopes will be discarded rather than blocking if the transport channel fills up (previously fixed in async-capable transports, now applied to the curl/ureq transports). (#701)