You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:53:09