Previous MAUI-Developer-Tools MAUI-Nuget-Coommunity-Toolkit Next

Debugging & Logging in .NET MAUI

🐞 Debugging & Logging in .NET MAUI

Debugging & Logging in .NET MAUI, with platform-specific tips plus how to extend it into cross-platform crash reporting so you don’t have to manually check logs on each device.

🐞 Debugging in MAUI

πŸ”§ General Tools

  • Visual Studio Debugger: Breakpoints, step-through, variable inspection.
  • Live Visual Tree: Inspect UI hierarchy at runtime.
  • Live Property Explorer: Adjust properties live to test changes.
  • Hot Reload: Quickly test fixes without restarting the app.

πŸ“± Platform-Specific Tips

πŸ€– Android

  • Use Logcat (via Visual Studio or Android Studio) for system/app logs.
  • Debug performance with Android Profiler (CPU, memory, network).
  • Check AndroidManifest.xml for permissions issues.

🍎 iOS

  • Use Xcode Console for runtime logs.
  • Inspect crash logs in Xcode Organizer.
  • Verify entitlements in Entitlements.plist.

πŸͺŸ Windows

  • Use Event Viewer for system logs.
  • Debug UI rendering with XAML Diagnostics.
  • Test scaling/DPI issues across displays.

πŸ’» macOS

  • Use Console.app for system logs.
  • Debug sandbox permissions (file/network access).
  • Check Info.plist for required capabilities.

πŸ“ Logging in MAUI

βš™οΈ Built-in Logging

MAUI uses Microsoft.Extensions.Logging.

builder.Logging.AddDebug();   // Debug Output window
builder.Logging.AddConsole(); // Console output

Usage:

private readonly ILogger<MyPage> _logger;

public MyPage(ILogger<MyPage> logger)
{
    _logger = logger;
    _logger.LogInformation("Page initialized");
}

public void DoWork()
{
    try
    {
        // work
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "Something went wrong");
    }
}

Logs flow to:

  • Android β†’ Logcat
  • iOS/macOS β†’ Console.app
  • Windows β†’ Debug Output / Event Viewer

πŸ“Š Cross-Platform Crash Reporting

Manual log inspection is fine for development, but in production you’ll want automatic crash/error reporting. Two common approaches:

1️⃣ App Center (Microsoft)

  • Provides crash reporting, analytics, and push notifications.
  • Works across Android, iOS, Windows, macOS.

Setup:

  • Add App Center SDK NuGet packages (Microsoft.AppCenter, Microsoft.AppCenter.Crashes).
  • Initialize in MauiProgram.cs:
AppCenter.Start("android={YourKey};ios={YourKey};windowsdesktop={YourKey}",
    typeof(Crashes));

Crashes are automatically collected and viewable in the App Center portal.

2️⃣ Serilog + Sink Providers

  • Structured logging with sinks for files, cloud services, or monitoring tools.
  • Example: log to a file locally and send to Seq or Azure Application Insights.
builder.Logging.AddSerilog(new LoggerConfiguration()
    .WriteTo.File("logs.txt")
    .WriteTo.ApplicationInsights("InstrumentationKey", TelemetryConverter.Traces)
    .CreateLogger());

πŸš€ Best Practices

  • Use structured logging (levels: Info, Warning, Error).
  • Keep platform-specific logs minimal; rely on shared logging APIs.
  • For production, integrate App Center or Serilog for centralized crash/error tracking.
  • Always test logging on each platform to ensure messages appear where expected.

βž• Additional Professional Tips

  • 🧠 Use correlation IDs to trace API calls across logs
  • πŸ“Š Track slow operations using performance timers
  • ⚑ Combine Polly retry policies with logging hooks
  • πŸ§ͺ Simulate crashes to validate reporting pipelines
  • πŸ” Mask sensitive data in logs for security compliance

πŸ† Enterprise-Grade Enhancements

  • Azure Application Insights telemetry integration
  • Centralized cloud logging dashboards
  • Automated alerting on crash thresholds
  • Advanced log correlation across microservices
  • Offline crash persistence & delayed upload

🐞 Debugging & Logging Recap

  • Visual Studio Debugger: Breakpoints, step-through, variable inspection.
  • Live Visual Tree & Property Explorer: Inspect and tweak UI at runtime.

πŸ“± Platform-specific tools:

  • Android β†’ Logcat, Profiler.
  • iOS/macOS β†’ Xcode Console, Console.app..
  • Windows β†’ Event Viewer, XAML Diagnostics.

πŸ“ Logging:

  • Built-in Microsoft.Extensions.Logging with AddDebug() and AddConsole().
  • Logs flow to platform-specific consoles (Logcat, Console.app, Debug Output).

πŸ“Š Cross-Platform Crash Reporting Options

1️⃣ App Center (Microsoft)

Setup: Add NuGet packages (Microsoft.AppCenter, Microsoft.AppCenter.Crashes).

Initialize in MauiProgram.cs:

AppCenter.Start("android={YourKey};ios={YourKey};windowsdesktop={YourKey}",
    typeof(Crashes));

✨ Features:

  • Automatic crash collection.
  • Analytics (usage, sessions, events).
  • Push notifications.

πŸ‘ Pros:

  • Easy setup, unified dashboard, Microsoft ecosystem.

⚠️ Cons:

  • Requires App Center account, limited customization.

2️⃣ Serilog + Sinks

Setup: Add Serilog NuGet package and configure sinks (file, Seq, Application Insights, etc.).

Initialize in MauiProgram.cs:

builder.Logging.AddSerilog(new LoggerConfiguration()
    .WriteTo.File("logs.txt")
    .WriteTo.ApplicationInsights("InstrumentationKey", TelemetryConverter.Traces)
    .CreateLogger());

✨ Features:

  • Structured logging (JSON).
  • Flexible sinks (local + cloud).
  • Rich filtering and formatting.

πŸ‘ Pros:

  • Highly customizable, integrates with enterprise monitoring.

⚠️ Cons:

  • More setup, requires managing sinks.

βš–οΈ Side-by-Side Comparison

Feature App Center Serilog + Sinks
Setup Simple, few lines of code More complex, requires sink config
Crash Reporting Automatic Manual (log exceptions explicitly)
Analytics Built-in (sessions, events) Depends on sink (e.g., Application Insights)
Customization Limited Very flexible
Best For Quick setup, mobile apps Enterprise apps needing structured logs

πŸš€ Best Practice

  • Use App Center for quick, unified crash reporting in mobile apps.
  • Use Serilog if you need structured logs, enterprise monitoring, or integration with tools like Seq or Azure Application Insights.
  • Some teams even combine both: App Center for crash analytics + Serilog for structured logs.

βž• Additional Practical Enhancements

  • 🧠 Add correlation IDs to trace requests across services.
  • ⏱ Track execution time using performance logging.
  • πŸ” Mask sensitive data (tokens, credentials) in logs.
  • πŸ“Š Build real-time dashboards for crashes and errors.
  • ⚑ Automate alerts for production crashes.

πŸ† Production-Grade Logging Architecture

  • Centralized logging pipeline
  • Distributed tracing support
  • Cloud-based analytics dashboards
  • Automated health monitoring
  • Long-term log retention policies
Back to Index
Previous MAUI-Developer-Tools MAUI-Nuget-Coommunity-Toolkit Next
*