IronTelemetry SDK for Rust
Error monitoring and crash reporting for Rust applications
Website •
Documentation •
Rust Guide •
Git
---
**IronTelemetry** helps you capture exceptions, track user journeys, and get actionable insights to fix issues faster. Built for developers who want simple, powerful error monitoring without the complexity.
## Features
- **Error Capture** - Capture errors with full context and metadata
- **Journey Tracking** - Understand what users did before an error occurred
- **Breadcrumbs** - Add context with custom breadcrumbs
- **Thread-Safe** - Safe for concurrent use with `Arc` and `RwLock`
- **Async Support** - Optional async feature for tokio/async-std
- **Zero-Copy** - Efficient memory usage with borrowed data where possible
## Installation
Add to your `Cargo.toml`:
```toml
[dependencies]
irontelemetry = "0.1"
```
For async support:
```toml
[dependencies]
irontelemetry = { version = "0.1", features = ["async"] }
```
## Quick Start
### Initialize the SDK
```rust
use irontelemetry::Client;
fn main() -> Result<(), Box> {
let client = Client::new("https://pk_live_xxx@irontelemetry.com")?;
// Your application code
Ok(())
}
```
### Capture Errors
```rust
if let Err(e) = do_something() {
client.capture_error(&*e);
}
// Or capture with message
client.capture_exception("RuntimeError", "Something went wrong");
```
### Track User Journeys
```rust
use irontelemetry::{Client, BreadcrumbCategory, create_journey_manager};
let journey_manager = create_journey_manager(&client);
let mut journey = journey_manager.start_journey("Checkout Flow");
journey.set_user("user-123", Some("user@example.com"), Some("John Doe"));
let result = journey.run_step("Validate Cart", BreadcrumbCategory::Business, || {
validate_cart()
});
if let Err(e) = result {
journey.fail(Some(&e.to_string()));
client.capture_exception("ValidationError", &e.to_string());
return Err(e.into());
}
journey.complete();
```
### Add Breadcrumbs
```rust
use irontelemetry::BreadcrumbCategory;
client.add_breadcrumb("User clicked checkout button", BreadcrumbCategory::Ui);
client.add_breadcrumb("Payment API called", BreadcrumbCategory::Http);
```
## Configuration
```rust
use irontelemetry::{Client, TelemetryOptions};
let options = TelemetryOptions::new("https://pk_live_xxx@irontelemetry.com")
.environment("production")
.app_version("1.2.3")
.sample_rate(1.0)
.debug(false);
let client = Client::with_options(options)?;
```
## Documentation
For complete documentation, visit [irontelemetry.com/docs](https://irontelemetry.com/docs).
## Other SDKs
| Platform | Package |
|----------|---------|
| JavaScript/TypeScript | [@ironservices/telemetry](https://git.marketally.com/ironservices/irontelemetry-js) |
| .NET | [IronTelemetry.Client](https://git.marketally.com/ironservices/irontelemetry-dotnet) |
| Python | [irontelemetry](https://git.marketally.com/ironservices/irontelemetry-python) |
| Go | [irontelemetry-go](https://git.marketally.com/ironservices/irontelemetry-go) |
| Java | [irontelemetry-java](https://git.marketally.com/ironservices/irontelemetry-java) |
## Support
- **Documentation**: [irontelemetry.com/docs](https://irontelemetry.com/docs)
- **Email**: dev@ironservices.io
- **Issues**: [git.marketally.com/ironservices/irontelemetry-rust/issues](https://git.marketally.com/ironservices/irontelemetry-rust/issues)
## License
MIT License - see [LICENSE](LICENSE) for details.