Function sentry_contrib_native::set_hook
source · [−]pub fn set_hook(
before_send: Option<Box<dyn Fn(Event) -> Event + Send + Sync + 'static>>,
hook: Option<Box<dyn Fn(&PanicInfo<'_>) + Send + Sync + 'static>>
)
Expand description
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())));