62 releases (28 breaking)

Uses new Rust 2021

new 0.29.1 Dec 2, 2022
0.29.0 Nov 17, 2022
0.28.0 Nov 4, 2022
0.27.0 Jun 20, 2022
0.1.4 Jul 8, 2016

#9 in Debugging

Download history 54799/week @ 2022-08-19 57636/week @ 2022-08-26 49059/week @ 2022-09-02 54975/week @ 2022-09-09 60257/week @ 2022-09-16 57846/week @ 2022-09-23 54605/week @ 2022-09-30 58977/week @ 2022-10-07 59735/week @ 2022-10-14 62359/week @ 2022-10-21 58144/week @ 2022-10-28 61744/week @ 2022-11-04 58694/week @ 2022-11-11 50977/week @ 2022-11-18 55700/week @ 2022-11-25 50872/week @ 2022-12-02

229,002 downloads per month
Used in 51 crates (39 directly)

Apache-2.0

260KB
4.5K SLoC

Sentry

Sentry Rust SDK: sentry

This crate provides support for logging events and errors / panics to the Sentry error logging service. It integrates with the standard panic system in Rust as well as a few popular error handling setups.

Quickstart

The most convenient way to use this library is via the sentry::init function, which starts a sentry client with a default set of integrations, and binds it to the current Hub. More Information on how to use Sentry in parallel, concurrent and async scenarios can be found on the Hub docs as well.

The sentry::init function returns a guard that when dropped will flush Events that were not yet sent to the sentry service. It has a two second deadline for this so shutdown of applications might slightly delay as a result of this. Keep the guard around or sending events will not work.

let _guard = sentry::init("https://key@sentry.io/42");
sentry::capture_message("Hello World!", sentry::Level::Info);
// when the guard goes out of scope here, the client will wait up to two
// seconds to send remaining events to the service.

More complex examples on how to use sentry can also be found in examples. Extended instructions may also be found on Sentry itself.

Integrations

What makes this crate useful are its various integrations. Some of them are enabled by default; See Features. Uncommon integrations or integrations for deprecated parts of the ecosystem require a feature flag. For available integrations and how to use them, see integrations and apply_defaults.

Minimal API

This crate comes fully-featured. If the goal is to instrument libraries for usage with sentry, or to extend sentry with a custom Integration or a Transport, one should use the sentry-core crate instead.

Features

Additional functionality and integrations are enabled via feature flags. Some features require extra setup to function properly.

Feature Default Is Integration Deprecated Additional notes
backtrace 🔌
contexts 🔌
panic 🔌
transport
anyhow 🔌
test
debug-images 🔌
log 🔌 Requires extra setup; See sentry-log's documentation.
debug-logs Requires extra setup; See sentry-log's documentation.
slog 🔌 Requires extra setup; See sentry-slog's documentation.
reqwest
native-tls reqwest must be enabled.
rustls reqwest must be enabled. native-tls must be disabled via default-features = false.
curl
surf
tower 🔌 Requires extra setup; See sentry-tower's documentation.
ureq ureq transport support using rustls by default
ureq-native-tls

Default features

  • backtrace: Enables backtrace support.
  • contexts: Enables capturing device, OS, and Rust contexts.
  • panic: Enables support for capturing panics.
  • transport: Enables the default transport, which is currently reqwest with native-tls.

Debugging/Testing

  • anyhow: Enables support for the anyhow crate.
  • test: Enables testing support.
  • debug-images: Attaches a list of loaded libraries to events (currently only supported on Unix).

Logging

  • log: Enables support for the log crate.
  • slog: Enables support for the slog crate.
  • debug-logs: Deprecated. Uses the log crate for internal logging.

Transports

  • reqwest: Default. Enables the reqwest transport.
  • native-tls: Default. Uses the native-tls crate. This only affects the reqwest transport.
  • rustls: Enables rustls support for reqwest. Please note that native-tls is a default feature, and default-features = false must be set to completely disable building native-tls dependencies.
  • curl: Enables the curl transport.
  • surf: Enables the surf transport.
  • ureq: Enables the ureq transport using rustls.
  • ureq-native-tls: Enables the ureq transport using native-tls.

Integrations

  • tower: Enables support for the tower crate and those using it.

Resources

License: Apache-2.0

Dependencies

~3–18MB
~393K SLoC