Function sentry_contrib_native::set_hook [−][src]
pub fn set_hook(
before_send: Option<Box<dyn Fn(Event) -> Event + Send + Sync + 'static>>,
hook: Option<Box<dyn Fn(&PanicInfo<'_>) + Send + Sync + 'static>>
)
Panic handler to send an Event
with the current stacktrace to Sentry.
before_send
is a callback that is able to modify the Event
before it
is captures.
hook
is a callback that is run after the Event
is captured.
Notes
This will not work properly if used with panic = "abort"
because
Shutdown
is never unwound. To fix this make sure you make the panic
handler itself call shutdown
.
Rust doesn’t allow panics inside of a panicking thread and reacts with an
abort
: if a custom transport or a before-send callback was registered
that can panic, it might lead to any panic!
being an abort
instead.
Examples
ⓘ
fn main() -> Result<()> { // pass original panic handler provided by rust to retain it's functionality set_hook(None, Some(std::panic::take_hook())); // it can also be removed set_hook(None, None); // the `Event` sent by a panic can also be modified set_hook( Some(Box::new(|mut event| { // do something with the event and then return it event })), None, ); let _shutdown = Options::new().init()?; panic!("application panicked") }
If you are using panic = "abort"
make sure to call shutdown
inside the
panic handler.
set_hook(None, Some(Box::new(|_| shutdown())));