Blazor MAUI Hybrid生产环境崩溃后如何读取控制台日志?
Blazor MAUI Hybrid iPad生产环境崩溃日志排查方法
1. 集成本地日志记录
在应用中添加本地日志逻辑,捕获未处理异常并写入沙盒文件,后续引导用户导出日志:
- 在
App.xaml.cs中注册全局异常捕获事件,记录异常详情到本地文件:
protected override void OnStart() { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; } private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { var exception = e.ExceptionObject as Exception; exception?.WriteToLog(); } private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e) { e.Exception.WriteToLog(); e.SetObserved(); }
- 扩展方法实现日志写入:
public static void WriteToLog(this Exception ex) { var logPath = Path.Combine(FileSystem.AppDataDirectory, "app-crash.log"); var logContent = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}\nException: {ex}\nStack Trace: {ex.StackTrace}\n\n"; File.AppendAllText(logPath, logContent); }
- 开启文件共享(修改
Info.plist),让用户能通过“文件”应用或iTunes导出日志:
<key>UIFileSharingEnabled</key> <true/>
- 在应用内添加反馈入口,让用户可直接将日志文件通过邮件发送给开发团队。
2. 利用App Store Connect崩溃报告
苹果官方提供的崩溃收集功能,可获取用户设备的崩溃堆栈:
- 确保用户开启设备的共享分析:设置 > 隐私与安全性 > 分析与改进 > 开启“共享iPhone分析”
- 登录App Store Connect,进入应用的「分析」板块,选择「崩溃」:
- 筛选目标设备(iPad)和应用版本,查看崩溃记录
- 若上传了编译时生成的
dSYM文件,可直接看到符号化的堆栈信息,定位到具体代码行
注意:分发应用时必须上传
dSYM文件,否则堆栈信息是混淆的,无法直接定位问题
3. 捕获Blazor WebAssembly端异常
针对Blazor组件内的未处理异常,添加全局捕获逻辑:
- 在
App.razor中使用ErrorBoundary组件包裹路由,捕获组件级异常并记录:
<ErrorBoundary> <ChildContent> <Router AppAssembly="@typeof(App).Assembly"> <!-- 路由内容 --> </Router> </ChildContent> <ErrorContent Context="ex"> <div class="error-message">发生未处理异常</div> @{ var logger = Services.GetRequiredService<ILogger<App>>(); logger.LogError(ex, "Blazor组件异常"); } </ErrorContent> </ErrorBoundary>
- 在Blazor的
Program.cs中配置日志提供者,将Blazor端日志写入本地文件:
builder.Logging.AddFile("blazor-logs.txt");
4. 后端日志上传
若应用依赖后端服务,可在捕获异常时将详情上传至服务器:
- 在异常处理逻辑中调用后端API,上传异常信息(包括堆栈、设备型号、iOS版本、应用版本等)
- 后端将这些信息存储到日志系统(如ELK、Serilog),方便集中排查
内容的提问来源于stack exchange,提问作者Smith5727
相关产品推荐
相关产品推荐

