1
0
mirror of https://github.com/actix/actix-website synced 2025-03-11 18:52:58 +01:00

First pass at Sentry.

This commit is contained in:
Cameron Dershem 2019-06-18 02:42:43 -04:00
parent 650c66b64a
commit 5ca7b6dc83
4 changed files with 50 additions and 34 deletions

View File

@ -20,47 +20,16 @@ initialized and configured and the [sentry-actix middleware](https://crates.io/c
needs to be added. Additionally it makes sense to also register the panic handler needs to be added. Additionally it makes sense to also register the panic handler
to be informed about hard panics. to be informed about hard panics.
```rust {{< include-example example="sentry" file="main.rs" section="middleware" >}}
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 # Reusing the Hub
If you use this integration the default sentry hub (`Hub::current()`) is typically the wrong one. 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: To get the request specific one you need to use the `ActixWebHubExt` trait:
```rust {{< include-example example="sentry" file="main.rs" section="hub" >}}
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 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. until the end of the `run` block.
```rust {{< include-example example="sentry" file="main.rs" section="hub2" >}}
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);
});
```

View File

@ -27,4 +27,5 @@ exclude = [
"http20", "http20",
"databases", "databases",
"og_databases", "og_databases",
"sentry",
] ]

View File

@ -0,0 +1,10 @@
[package]
name = "sentry"
version = "0.1.0"
authors = ["Cameron Dershem <cameron@pinkhatbeard.com>"]
edition = "2018"
[dependencies]
actix-web = "1.0"
sentry-actix = "0.15"
sentry = "0.15"

View File

@ -0,0 +1,36 @@
// <middleware>
// use actix_web::{web, App, HttpResponse};
// use sentry;
// 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::new()
// // .data(state)
// .wrap(SentryMiddleware::new())
// .route("/", web::get().to(|| HttpResponse::Ok()));
// }
// </middleware>
// <hub>
// use sentry::{Hub, Level};
// use sentry_actix::ActixWebHubExt;
// let hub = Hub::from_request(req);
// hub.capture_message("Something is not well", Level::Warning);
// // </hub>
// // <hub2>
// 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);
// });
// </hub2>