Backend: Error Monitoring
Backend: Logging
Go
JS
Python
Ruby
Java
Rust
Hosting Providers
Backend: Tracing
Native OpenTelemetry
Fullstack Frameworks
Overview
Self Host & Local Dev
Menu
Using highlight.io with actix-web
Learn how to set up highlight.io without a framework.
1
Add `tracingOrigins` to your client Highlight snippet.
This backend SDK requires one of the Highlight frontend SDKs to be installed, so please make sure you've followed the fullstack mapping guide first.
H.init("<YOUR_PROJECT_ID>", {
  tracingOrigins: ['localhost', 'example.myapp.com/backend'],
  networkRecording: {
    enabled: true,
    recordHeadersAndBody: true,
  },
});2
Install the Highlight Rust actix SDK.
Add Highlight to your Config.toml.
[dependencies]
highlightio-actix = "1"3
Initialize the Highlight Rust SDK and actix Middleware.
highlightio_actix::highlight::Highlight::init initializes the SDK, and adding the highlightio_actix::HighlightActix middleware will start tracing actix.
use actix_web::{App, Error, HttpServer};
use highlightio_actix::{highlight::{Highlight, HighlightConfig}, HighlightActix};
// ...your services...
#[actix_web::main]
async fn main() -> Result<(), Error> {
    let h = Highlight::init(HighlightConfig {
        project_id: "<YOUR_PROJECT_ID>".to_string(),
        service_name: "my-rust-app".to_string(),
        service_version: "git-sha".to_string(),
        ..Default::default()
    }).expect("Failed to initialize Highlight.io");
	let _h = h.clone();
    HttpServer::new(move || {
        App::new()
            .wrap(HighlightActix::new(&_h))
            // ...
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await?;
	h.shutdown();
    Ok(())
}4
Verify your errors are being recorded.
Now that you've set everything up, you can verify that the backend error handling works by throwing an error in a service. Visit the highlight errors page and check that backend errors are coming in.
// ...
#[get("/error")]
async fn error() -> Result<impl Responder, std::io::Error> {
    Err(std::io::Error::new(
        std::io::ErrorKind::Other,
        "Test error"
    ))?;
    Ok(format!("You shouldn't be able to see this."))
}
// ...
#[actix_web::main]
async fn main() -> Result<(), Error> {
    // ...
    HttpServer::new(move || {
        App::new()
            .wrap(HighlightActix::new(&h))
            .service(error) // add this
    })
    
    // ...
}5
Set up logging.
Start sending logs to Highlight! Follow the logging setup guide to get started.