irontelemetry-dotnet/README.md

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.
[![NuGet](https://img.shields.io/nuget/v/IronTelemetry.Client.svg)](https://www.nuget.org/packages/IronTelemetry.Client)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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.