π 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