56 个版本 (28 个破坏性更新)

0.34.0 2024 年 6 月 5 日
0.32.3 2024 年 4 月 16 日
0.32.2 2024 年 1 月 30 日
0.32.1 2023 年 12 月 18 日
0.2.0 2018 年 7 月 21 日

#150HTTP 服务器

Download history 4621/week @ 2024-05-01 5317/week @ 2024-05-08 4975/week @ 2024-05-15 4684/week @ 2024-05-22 5864/week @ 2024-05-29 6056/week @ 2024-06-05 5477/week @ 2024-06-12 4258/week @ 2024-06-19 4262/week @ 2024-06-26 3560/week @ 2024-07-03 3813/week @ 2024-07-10 4185/week @ 2024-07-17 4438/week @ 2024-07-24 4063/week @ 2024-07-31 3367/week @ 2024-08-07 2626/week @ 2024-08-14

每月 15,187 次下载

Apache-2.0

245KB
4.5K SLoC

Sentry

Sentry Rust SDK:sentry-actix

此包为 actix-web 添加了一个中间件,用于捕获错误并将其报告给 Sentry

要使用此中间件,只需配置 Sentry,然后将它添加到您的 actix web 应用程序中作为中间件。由于 actix 通常处理非可发送对象且高度并发,因此此中间件会为每个请求创建一个新的 hub。因此,许多 sentry 集成(如 breadcrumbs)在您未绑定 actix hub 的情况下将不起作用。

示例

use std::io;

use actix_web::{get, App, Error, HttpRequest, HttpServer};

#[get("/")]
async fn failing(_req: HttpRequest) -> Result<String, Error> {
    Err(io::Error::new(io::ErrorKind::Other, "An error happens here").into())
}

fn main() -> io::Result<()> {
    let _guard = sentry::init(sentry::ClientOptions {
        release: sentry::release_name!(),
        ..Default::default()
    });
    std::env::set_var("RUST_BACKTRACE", "1");

    let runtime = tokio::runtime::Builder::new_multi_thread()
        .enable_all()
        .build()?;
    runtime.block_on(async move {
        HttpServer::new(|| {
            App::new()
                .wrap(sentry_actix::Sentry::new())
                .service(failing)
        })
        .bind("127.0.0.1:3001")?
        .run()
        .await
    })
}

使用发布健康度

当启用 auto_session_tracking 且客户端配置为使用 SessionMode::Request 时,actix 中间件将自动为每个请求启动一个新的会话。

let _sentry = sentry::init(sentry::ClientOptions {
    release: sentry::release_name!(),
    session_mode: sentry::SessionMode::Request,
    auto_session_tracking: true,
    ..Default::default()
});

重用 Hub

此集成将自动从主 Hub 创建一个新的 per-request Hub,并更新当前 Hub 实例。例如,以下示例将在当前请求的 Hub 中捕获一条消息

sentry::capture_message("Something is not well", sentry::Level::Warning);

资源

许可证:Apache-2.0

依赖项

~15–25MB
~457K SLoC