Codex TRACE 日志高频写盘处理说明
Hi大家好我是半亩花海。本文记录了Codex日志系统存在TRACE级别日志高频写入问题22.7条/秒占日志总量78%导致C盘日志文件持续膨胀至243MB。通过创建SQLite的BEFORE INSERT触发器拦截TRACE日志写入同时保留其他级别日志。验证显示TRACE日志最大ID锁定为20942868且不再增长成功解决无效磁盘写入问题操作前已做好数据库备份确保安全。该方案在降低磁盘I/O的同时不影响DEBUG等有用日志的记录。目录一、问题描述二、可能影响三、处理方案1直接给 Codex如下指令2在 logs 表上创建 SQLite BEFORE INSERT trigger四、验证结果一、问题描述C:\Users\HUAWEI\.codex\logs_2.sqlite持续接收大量 TRACE 级日志并通过 SQLite WAL 模式频繁写入磁盘。检查结果显示日志写入速度约为 22.7 条/秒。最近 1000 条日志中TRACE 约占 78%。数据库约 243 MBWAL 文件约 37.6 MB。TRACE 日志的最大 id 持续增长。二、可能影响长期高频写盘可能造成增加 SSD 写入量和磁盘占用。数据库及 WAL 文件持续膨胀。产生不必要的磁盘 I/O。极端情况下影响 Codex 或其他程序的响应速度。TRACE 日志通常过于详细对日常使用价值较低。三、处理方案1直接给 Codex如下指令1.codex/logs_2.sqlite 是否因 TRACE 日志持续高频写盘。如果存在高频写盘用 SQLite trigger 拦截 logs 表 insert确认 MAXid和WAL 下trace级日志不再增长。2在logs表上创建 SQLiteBEFORE INSERTtriggerCREATE TRIGGER block_trace_logs_insert BEFORE INSERT ON logs FOR EACH ROW WHEN NEW.level TRACE COLLATE NOCASE BEGIN SELECT RAISE(IGNORE); END;该 trigger 会在写入前丢弃 TRACE 日志同时保留 DEBUG、INFO、WARN 和 ERROR 等其他级别日志。操作前已创建数据库备份C:\Users\HUAWEI\.codex\logs_2.before_trace_trigger.20260711_100932.sqlite四、验证结果trigger 生效后连续采样确认TRACE 最大 id 固定为20942868。TRACE 记录增长量为0。模拟插入 TRACE 日志时SQLite 返回的变更数量为0。新增记录仅包含 DEBUG 和 INFO 等非 TRACE 日志。WAL 仍可能因其他级别日志发生写入但不再新增 TRACE 记录。问题确认为 TRACE 日志持续高频写入。通过 SQLite trigger 已成功阻止新的 TRACE 日志入库从而显著减少无效日志写盘同时不影响其他重要日志的正常记录。