运行日志
「设置 → 运行日志」既是日志级别的开关,也是一个实时日志查看器。
副标题:「查看和配置应用诊断日志。日志会写入本地文件,并保留在内存中以便实时查看。」
日志级别
一个下拉框,六档:
| 级别 | 说明 |
|---|---|
| 关闭 | 不记录 |
| 错误 | 只记错误 |
| 警告 | |
| 信息(默认) | |
| 调试 | 记得更多,日志也更大 |
| 跟踪 | 最详细 |
改动通过 tracing 的 reload 句柄实时应用,不需要重启。多个窗口之间会同步。保存失败提示「保存日志级别失败」。
环境变量会锁住这一节
只要 CROLI_LOG 或 RUST_LOG 有非空值,下拉框和下面的「按模块覆盖」整块都会变灰,并出现一条琥珀色提示:
日志级别由 RUST_LOG / CROLI_LOG 环境变量控制;请在该处修改以生效。
两者同时存在时 CROLI_LOG 优先。
按模块覆盖
为特定模块单独设级别,不影响全局。点「添加」追加一行,每行是「模块名 + 级别」。
- 模块名是自由输入,带候选提示:
croli_lib::acp、croli_lib::acp::delegation、croli_lib::web、croli_lib::chat_channel、croli_lib::db。 - 格式必须是
a::b::c这种 Rust 模块路径(只允许字母、数字、下划线和::)。不合法的输入会标红框,并且不会被写进保存的配置。 - 失焦即保存。右侧图标按钮移除该行。
默认一行都没有。
有几个模块带写死的上限,UI 和
RUST_LOG都抬不动——例如agent_client_protocol和sqlx::query最高只到 Warn。这是为了避免它们把日志冲爆。
最近日志
实时查看最近的日志记录。
工具栏:
- 暂停 / 实时 — 切换日志订阅,默认实时。
- 刷新 — 重新拉取最近 5000 条。
- 清空 — 只清屏,不动后端缓冲区,也不删文件。
- 打开文件夹(仅桌面端)— 在系统文件管理器里定位日志目录。
筛选:
- 搜索框 — 在消息和来源(target)里不区分大小写匹配。
- 级别下拉 — 全部级别(默认)/ 错误及以上 / 警告及以上 / 信息及以上 / 调试及以上 / 跟踪及以上。这只过滤你眼前看到的,不改变实际采集和写入文件的级别。
右侧显示「已显示 x / y」。列表最多保留 5000 行。每行是时间、级别徽章、来源、消息;带 span 或字段的行可以展开,显示 spans: 面包屑和键值表。
自动滚动只在你已经贴近底部时跟随新记录——往上翻历史时不会被新日志拽走。
日志文件(仅 Web / 服务器模式)
桌面端不显示这一节(桌面端请用上面的「打开文件夹」)。
从磁盘下载完整日志文件,查看实时缓冲区之外的历史。每个文件显示名字、大小和一个下载按钮。
超过 16 MiB 的文件只会下载最新的那一段,文件名改成 *.tail.log,并提示「文件较大,已下载最新的 {size}。完整文件请在日志目录中查看。」
日志存在哪
目录按这个顺序解析:
CROLI_LOG_DIR → $CROLI_HOME/logs → $CROLI_DATA_DIR/logs → ~/.croli/logs
- 内存环形缓冲 — 5000 条且 4 MiB,两个上限谁先到算谁。
- 磁盘 — 按天轮转,默认保留 30 个文件,用
CROLI_LOG_MAX_FILES调整。 - 单文件读取上限 — 16 MiB(上面那条截断提示的来源)。
值得了解
- 「清空」只清你眼前这一屏。要真的腾空间,删日志目录里的文件,或把
CROLI_LOG_MAX_FILES调小。 - 调到「调试」或「跟踪」会显著增加磁盘写入,排查完记得调回「信息」。
- 级别改动会同步到所有窗口,两个设置窗口同时开着也不会打架。