Files
FinDataHub/App
FinDataHub 73b45d7c0c fix(client): debug.log 加轮转并缓存时间戳格式化
三个问题都在 DebugLogger:
1. 无轮转:minLevel 默认 .debug 且应用常驻,实测 debug.log 已达 1.5 MB
   且只在手动清理时下降,长期运行会到 GB 级。
   修:5MB × 3 份轮转(debug.log → .1 → .2 → .3),磁盘上限约 20 MB。
2. timestampStr 是计算属性,每次读取新建 DateFormatter(构造约 100µs),
   而它被日志列表逐条渲染读取——刷新一次列表就新建 N 个。
   修:创建条目时格式化一次并存储。
3. 每条日志 open/close 一次 FileHandle(3 次系统调用)。
   修:复用句柄。

实现约束(已写入注释):
- 共享 DateFormatter 非线程安全,故标注仅主线程调用
  (DebugLogger 是 @MainActor,条目只在其方法内创建)
- nonisolated(unsafe) 的两个状态只在 logQueue 串行队列上访问
- 阈值常量放文件作用域:@MainActor 类型的 static let 会被 actor 隔离,
  nonisolated 方法引用会触发 Swift 6 错误

测试:DebugLogEntryTests.swift 6 条(格式、稳定性、级别顺序与配色唯一性)。
Swift 测试 12 → 18,全部通过。
2026-10-26 20:55:42 +08:00
..