irontelemetry-dotnet/README.md

3.3 KiB

IronTelemetry.Client

Error monitoring and crash reporting SDK for .NET applications.

Installation

dotnet add package IronTelemetry.Client

Quick Start

Level 0: Basic Exception Capture

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:

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

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

// 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:

IronTelemetry.Init("your-dsn");
TelemetryExtensions.UseUnhandledExceptionHandler();

Helper Methods

// 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

// Flush pending events before app shutdown
IronTelemetry.Flush();

// Or async
await IronTelemetry.FlushAsync();