Skip to main content

日志

面向用户的概览(CLI + 控制 UI + 配置)请参见 /logging OpenClaw 有两个日志输出面:
  • 控制台输出 - 你在终端 / 调试 UI 中看到的内容。
  • 文件日志 - 由网关日志记录器写入的 JSON 行。
在启动时,网关会记录解析后的默认代理模型,以及会影响新会话的模式默认值:
thinking 来自默认代理、模型参数或全局代理默认值;未设置时显示为 mediumfast 来自默认代理或模型的 fastMode 参数。

基于文件的日志记录器

  • 默认的滚动日志文件位于 /tmp/openclaw/ 下(每天一个文件),日期根据网关主机的本地时区确定。默认配置文件使用 openclaw-YYYY-MM-DD.log;命名配置文件使用 openclaw-<profile>-YYYY-MM-DD.log(例如,openclaw-dev-YYYY-MM-DD.log)。如果该目录不安全或不可写(所有者错误、全局可写或为符号链接),OpenClaw 会改用用户范围的 os.tmpdir()/openclaw-<uid> 路径;在 Windows 上始终使用该操作系统临时目录回退路径。
  • 活动日志文件达到 logging.maxFileBytes 时进行轮换(默认值:100 MB),最多保留五个带编号的归档文件(.1.5),并继续写入新的活动文件。
  • 通过 ~/.openclaw/openclaw.json 配置日志文件路径和级别:logging.filelogging.level
  • 文件格式为每行一个 JSON 对象。
通话、实时语音以及受管房间的代码路径会使用共享文件日志记录器,记录有限生命周期的内容,供运维调试和 OTLP 日志导出使用。转写文本、音频载荷、轮次 id、呼叫 id 和提供方 item id 都不会复制到日志记录中。 控制 UI 的 Logs 选项卡通过网关(logs.tail)来跟踪此文件。CLI 也执行相同操作:

详细输出 vs.日志级别

  • 文件日志 仅由 logging.level 控制。
  • --verbose 只影响 控制台详细程度(以及 WS 日志样式)——它不会提升文件日志级别。
  • 若要在文件日志中捕获仅详细模式下可见的信息,请将 logging.level 设为 debugtrace
  • Trace 日志还会包含所选热点路径的诊断时间摘要,例如插件工具工厂准备过程。参见 /tools/plugin#slow-plugin-tool-setup

控制台捕获

CLI 会捕获 console.log/info/warn/error/debug/trace,将它们写入文件日志,同时仍然输出到 stdout/stderr。 可独立调整控制台详细程度:
  • logging.consoleLevel(默认值为 info
  • logging.consoleStylepretty | json)。未设置时,在 TTY 上输出为 pretty,否则自动使用 compact 样式。compact 不再是可设置的值;openclaw doctor --fix 会将已存储的值映射为 pretty

脱敏

OpenClaw 会在日志或转录输出离开进程之前对敏感 token 进行脱敏。此脱敏策略适用于控制台、文件日志、OTLP 日志记录和会话转录文本 sink,因此在 JSONL 行或消息写入磁盘之前,匹配到的密钥值会被掩码处理。
  • 敏感值脱敏始终启用。
  • logging.redactPatterns:正则表达式字符串数组(覆盖默认值)
    • 使用原始正则表达式字符串(自动应用 gi),或使用 /pattern/flags 自定义标志。
    • 匹配项会保留前 6 个字符和后 4 个字符并进行掩码处理(值长度 ≥ 18 个字符);较短的值会变为 ***
    • 默认规则涵盖常见的密钥赋值、CLI 标志、JSON 字段、Bearer 标头、PEM 块、常见供应商 token 前缀,以及支付凭证字段名称(卡号、CVC/CVV、共享支付 token、支付凭证)。
Control UI 工具调用事件、sessions_history 输出、诊断导出、供应商错误、exec 审批显示和 Gateway WebSocket 日志等安全边界始终会进行脱敏。logging.redactPatterns 可添加特定于部署的模式。

Gateway WebSocket 日志

Gateway 以两种模式打印 WebSocket 协议日志:
  • 普通模式(不使用 --verbose:仅打印“有意义的” RPC 结果——错误(ok=false)、耗时较长的调用(默认阈值:>= 50ms)和解析错误。
  • 详细模式(--verbose:打印所有 WS 请求/响应流量。

WS 日志样式

openclaw gateway 支持按 Gateway 切换样式:
  • --ws-log auto(默认):普通模式使用优化输出;详细模式使用紧凑输出。
  • --ws-log compact:在详细模式下使用紧凑输出(配对的请求/响应)。
  • --ws-log full:在详细模式下输出每个帧的完整内容。
  • --compact--ws-log compact 的别名。

控制台格式化(子系统日志)

控制台格式化器是感知 TTY的,并会打印一致的带前缀行。子系统日志记录器会让输出保持分组且便于浏览:
  • 每一行都有子系统前缀(例如 [gateway][canvas][tailscale])。
  • 子系统颜色(每个子系统的颜色保持稳定,根据名称进行哈希)以及级别颜色。
  • 当输出为 TTY 或环境看起来像富终端(TERMCOLORTERMTERM_PROGRAM)时启用颜色;遵循 NO_COLORFORCE_COLOR
  • 缩短的子系统前缀:删除开头的 gateway/channels/providers/ 部分,然后最多保留剩余部分中的最后 2 个部分(例如 channels/turn/execution 显示为 turn/execution)。已知的频道子系统(telegramwhatsappslack 等)始终只折叠为频道名称。
  • 按子系统划分的子日志记录器(自动添加前缀 + 结构化字段 { subsystem })。
  • 用于 QR/UX 输出的 logRaw()(无前缀、无格式化)。
  • 控制台样式pretty | compact | json
  • 控制台日志级别与文件日志级别分离(当 logging.leveldebugtrace 时,文件会保留完整详细信息)。
  • WhatsApp 消息正文以 debug 级别记录(使用 --verbose 查看)。
这使得文件日志保持稳定,同时让交互式输出更易于浏览。

相关内容