日志(macOS)¶
滚动诊断文件日志(调试窗格)¶
macOS 应用通过 swift-log 记录日志(默认使用统一日志),也可以写入轮转的本地文件日志以进行持久化捕获(DiagnosticsFileLog)。
- 启用:Debug pane -> Logs -> App logging -> “Write rolling diagnostics log (JSONL)”(默认关闭)。
- 详细程度:Debug pane -> Logs -> App logging -> Verbosity 选择器。
- 位置:
~/Library/Logs/OpenClaw/diagnostics.jsonl。 - 轮转:达到 5 MB 时轮转;最多保留 5 个备份,后缀为
.1....5(最早的被丢弃)。 - 清除:Debug pane -> Logs -> App logging -> “Clear” 会删除当前文件和所有备份。
文件日志是单独的、明确选择加入的功能。启用它不会禁用下文所述的应用插值脱敏。它仍然包含公开和未注解的消息、元数据以及直接诊断记录,这些内容可能包含敏感数据。仅在调试期间启用,之后关闭,并在共享前检查活动文件和备份。
将统一日志导出为 JSON¶
运行 ./scripts/clawlog.sh --json 将最近的统一日志事件写入一个 JSON 数组并输出到标准输出,或添加 --output logs.json 将数组写入文件而不打印它。默认输出包含最近 50 条日志记录;使用 --lines 1 获取最新记录,或使用 --all 获取所有匹配记录。在 JSON 模式下,--lines 计算的是完整记录数,而不是物理行数。
JSON 导出不能与 --follow 或 --list-categories 组合使用。请在不带 --json 的情况下使用这些选项。
应用日志记录器脱敏¶
macOS 应用的 swift-log 桥接器在将消息交给统一日志或可选的文件日志之前,会先将消息渲染为文本。其插值注解是应用侧规则,不是原生 OSLog 隐私元数据:
privacy: .private会在任一接收方(sink)接收到值之前,将其替换为<private>。privacy: .private(mask: .hash)会将值替换为带键的哈希。相等的值可在同一应用进程内关联;哈希在应用重启后会改变。privacy: .public、未注解的插值以及 swift-log 元数据不会自动脱敏。不要因为日志来自统一日志,就认为它可以安全共享。
这同样会保护在记录前拼接的字符串中的私有插值。更改详细程度、文件捕获以及 macOS 私有数据覆盖都无法恢复被应用桥接器移除的值。
macOS 上的统一日志私有数据¶
某些共享组件直接使用原生 OSLog,而不是应用的 swift-log 桥接器。原生 OSLog 通常会脱敏私有值;显式标记为 public 的值保持可见。对于这些原生事件,位于 /Library/Preferences/Logging/Subsystems/ 的子系统 plist 可以启用私有数据捕获。这并不能用来揭示桥接器的 <private> 占位符或哈希。背景:macOS 日志记录隐私问题。
为 OpenClaw(ai.openclaw)启用¶
仅当需要 原生 OSLog 事件中的私有值时才使用此功能。首先检查是否已存在 ai.openclaw.plist,并保留它,以便之后恢复先前的设置。将 plist 写入临时文件,然后以 root 身份原子地安装它:
cat <<'EOF' >/tmp/ai.openclaw.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DEFAULT-OPTIONS</key>
<dict>
<key>Enable-Private-Data</key>
<true/>
</dict>
</dict>
</plist>
EOF
sudo install -m 644 -o root -g wheel /tmp/ai.openclaw.plist /Library/Preferences/Logging/Subsystems/ai.openclaw.plist
在重现问题之前启用该覆盖:它会影响新的原生 OSLog 事件,而不会影响已收集的条目。使用 ./scripts/clawlog.sh --category WebChat --last 5m 检查输出(--last/-l 设置时间范围,默认 5m;--category/-c 按类别过滤)。
调试后禁用¶
- 如果你为此捕获创建了 plist,请删除它:
sudo rm /Library/Preferences/Logging/Subsystems/ai.openclaw.plist。如果它之前就已存在,请改为恢复保存的版本。 - 该覆盖可能会在原生事件中暴露电话号码和消息正文。仅在需要时保持启用;删除它并不会擦除已捕获的数据。
- 如果你启用了滚动文件捕获,请单独关闭它。macOS 覆盖不控制该接收方。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw