1
0
mirror of https://github.com/actix/actix-website synced 2024-12-18 09:53:12 +01:00
actix-website/content/docs/sentry.md
2018-06-19 19:50:00 +02:00

1.8 KiB

title menu weight
Sentry docs_patterns 1020

Sentry Crash Reporting

Sentry is a crash reporting system that supports the failure crate which is the base of the actix error reporting. With a middleware it's possible to automatically report server errors to Sentry.

Middleware

This middleware captures any error in the server error range (500 - 599) and sends the attached error to sentry with its stacktrace.

To use the middleware the sentry crate needs to be initialized and configured and the sentry-actix middleware needs to be added. Additionally it makes sense to also register the panic handler to be informed about hard panics.

extern crate sentry;
extern crate sentry_actix;

use sentry_actix::SentryMiddleware;

use std::env;

fn main() {
    sentry::init("SENTRY_DSN_GOES_HERE");
    env::set_var("RUST_BACKTRACE", "1");
    sentry::integrations::panic::register_panic_handler();

    let mut app = App::with_state(state)
        .middleware(SentryMiddleware::new())
        // ...
}

Reusing the Hub

If you use this integration the default sentry hub (Hub::current()) is typically the wrong one. To get the request specific one you need to use the ActixWebHubExt trait:

use sentry::{Hub, Level};
use sentry_actix::ActixWebHubExt;

let hub = Hub::from_request(req);
hub.capture_message("Something is not well", Level::Warning);

The hub can also be made current for the duration of a call. Then Hub::current() works correctly until the end of the run block.

use sentry::{Hub, Level};
use sentry_actix::ActixWebHubExt;

let hub = Hub::from_request(req);
Hub::run(hub, || {
    sentry::capture_message("Something is not well", Level::Warning);
});