164 lines
3.6 KiB
Markdown
164 lines
3.6 KiB
Markdown
# IronTelemetry.Client
|
|
|
|
Error monitoring and crash reporting SDK for .NET applications. Capture exceptions, track user journeys, and get insights to fix issues faster.
|
|
|
|
[](https://www.nuget.org/packages/IronTelemetry.Client)
|
|
[](https://opensource.org/licenses/MIT)
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
dotnet add package IronTelemetry.Client
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
### Level 0: Basic Exception Capture
|
|
|
|
```csharp
|
|
using IronTelemetry.Client;
|
|
|
|
// Initialize with your DSN
|
|
IronTelemetry.Init("https://pk_live_xxx@irontelemetry.com");
|
|
|
|
// Capture exceptions
|
|
try
|
|
{
|
|
DoSomething();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
IronTelemetry.CaptureException(ex);
|
|
throw;
|
|
}
|
|
|
|
// Or use the extension method
|
|
catch (Exception ex)
|
|
{
|
|
throw ex.Capture();
|
|
}
|
|
```
|
|
|
|
### Level 1: Journey Tracking
|
|
|
|
Track user journeys to understand the context of errors:
|
|
|
|
```csharp
|
|
using IronTelemetry.Client;
|
|
|
|
// Track a complete user journey
|
|
using (IronTelemetry.StartJourney("Checkout Flow"))
|
|
{
|
|
IronTelemetry.SetUser(currentUser.Id, currentUser.Email);
|
|
|
|
using (IronTelemetry.StartStep("Validate Cart", "business"))
|
|
{
|
|
ValidateCart();
|
|
}
|
|
|
|
using (IronTelemetry.StartStep("Process Payment", "business"))
|
|
{
|
|
ProcessPayment();
|
|
}
|
|
|
|
using (IronTelemetry.StartStep("Send Confirmation", "notification"))
|
|
{
|
|
SendConfirmationEmail();
|
|
}
|
|
}
|
|
```
|
|
|
|
Any exceptions captured during the journey are automatically correlated.
|
|
|
|
## Configuration
|
|
|
|
```csharp
|
|
IronTelemetry.Init(new TelemetryOptions
|
|
{
|
|
Dsn = "https://pk_live_xxx@irontelemetry.com",
|
|
Environment = "production",
|
|
AppVersion = "1.2.3",
|
|
SampleRate = 1.0, // 100% of events
|
|
Debug = false,
|
|
BeforeSend = ex => !ex.Message.Contains("expected error")
|
|
});
|
|
```
|
|
|
|
## Features
|
|
|
|
- **Automatic Exception Capture**: Capture and report exceptions with full stack traces
|
|
- **Journey Tracking**: Track user flows and correlate errors with context
|
|
- **Breadcrumbs**: Leave a trail of events leading up to an error
|
|
- **User Context**: Associate errors with specific users
|
|
- **Tags & Extras**: Add custom metadata to your events
|
|
- **Buffered Sending**: Events are batched and sent efficiently
|
|
- **Sample Rate**: Control the volume of events sent
|
|
- **Before Send Hook**: Filter events before sending
|
|
|
|
## Breadcrumbs
|
|
|
|
```csharp
|
|
// Add breadcrumbs to understand what happened before an error
|
|
IronTelemetry.AddBreadcrumb("User clicked checkout button", "ui");
|
|
IronTelemetry.AddBreadcrumb("Payment API called", "http");
|
|
|
|
// Or with full control
|
|
IronTelemetry.AddBreadcrumb(new Breadcrumb
|
|
{
|
|
Category = "auth",
|
|
Message = "User logged in",
|
|
Level = BreadcrumbLevel.Info,
|
|
Data = new Dictionary<string, object> { ["userId"] = "123" }
|
|
});
|
|
```
|
|
|
|
## Global Exception Handling
|
|
|
|
For console applications:
|
|
|
|
```csharp
|
|
IronTelemetry.Init("your-dsn");
|
|
TelemetryExtensions.UseUnhandledExceptionHandler();
|
|
```
|
|
|
|
## Helper Methods
|
|
|
|
```csharp
|
|
// Track a step with automatic error handling
|
|
TelemetryExtensions.TrackStep("Process Order", () =>
|
|
{
|
|
ProcessOrder();
|
|
});
|
|
|
|
// Async version
|
|
await TelemetryExtensions.TrackStepAsync("Fetch Data", async () =>
|
|
{
|
|
await FetchDataAsync();
|
|
});
|
|
|
|
// With return value
|
|
var result = TelemetryExtensions.TrackStep("Calculate Total", () =>
|
|
{
|
|
return CalculateTotal();
|
|
});
|
|
```
|
|
|
|
## Flushing
|
|
|
|
```csharp
|
|
// Flush pending events before app shutdown
|
|
IronTelemetry.Flush();
|
|
|
|
// Or async
|
|
await IronTelemetry.FlushAsync();
|
|
```
|
|
|
|
## Links
|
|
|
|
- [Documentation](https://www.irontelemetry.com/docs)
|
|
- [Dashboard](https://www.irontelemetry.com)
|
|
|
|
## License
|
|
|
|
MIT License - see [LICENSE](LICENSE) for details.
|