## 问题 1. `LogExporter::exportLogs` 在主线程同步运行,进度条从 0 直接跳到 100 2. 不检查 `QTextStream::status()`,磁盘满时静默截断输出 3. JSON 导出加了 UTF-8 BOM,不符合 RFC 8259,部分解析器报错 4. 写 BOM 用 `file.write()` 再接 `QTextStream`,混合 I/O 模式 5. 每条记录都发 `progressChanged` 信号,10万条=10万次开销 6. JSON 导出在内存中构建完整 `QJsonArray`,大文件 OOM 风险 ## 严重级别 Critical + Major ## 修复方案 - 导出循环中每 1000 条发一次进度信号 - 写入结束后检查 `out.status()` - JSON 不加 BOM,TXT/CSV 用 `setGenerateByteOrderMark(true)` - JSON 改为流式写入 - 导出逻辑移至工作线程或在循环中调用 `processEvents()` ## 文件 - `src/core/logexporter.cpp` - `src/ui/logviewer.cpp`
问题
LogExporter::exportLogs在主线程同步运行,进度条从 0 直接跳到 100QTextStream::status(),磁盘满时静默截断输出file.write()再接QTextStream,混合 I/O 模式progressChanged信号,10万条=10万次开销QJsonArray,大文件 OOM 风险严重级别
Critical + Major
修复方案
out.status()setGenerateByteOrderMark(true)processEvents()文件
src/core/logexporter.cppsrc/ui/logviewer.cpp