日志
面向用户的概览(CLI + 控制 UI + 配置)请参见 /logging。 OpenClaw 有两个日志输出面:- 控制台输出 - 你在终端 / 调试 UI 中看到的内容。
- 文件日志 - 由网关日志记录器写入的 JSON 行。
thinking 来自默认代理、模型参数或全局代理默认值;未设置时显示为 medium。fast 来自默认代理或模型的 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.file、logging.level。 - 文件格式为每行一个 JSON 对象。
logs.tail)来跟踪此文件。CLI 也执行相同操作:
详细输出 vs.日志级别
- 文件日志 仅由
logging.level控制。 --verbose只影响 控制台详细程度(以及 WS 日志样式)——它不会提升文件日志级别。- 若要在文件日志中捕获仅详细模式下可见的信息,请将
logging.level设为debug或trace。 - Trace 日志还会包含所选热点路径的诊断时间摘要,例如插件工具工厂准备过程。参见 /tools/plugin#slow-plugin-tool-setup。
控制台捕获
CLI 会捕获console.log/info/warn/error/debug/trace,将它们写入文件日志,同时仍然输出到 stdout/stderr。
可独立调整控制台详细程度:
logging.consoleLevel(默认值为info)logging.consoleStyle(pretty|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、支付凭证)。
- 使用原始正则表达式字符串(自动应用
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 或环境看起来像富终端(
TERM/COLORTERM/TERM_PROGRAM)时启用颜色;遵循NO_COLOR和FORCE_COLOR。 - 缩短的子系统前缀:删除开头的
gateway/、channels/或providers/部分,然后最多保留剩余部分中的最后 2 个部分(例如channels/turn/execution显示为turn/execution)。已知的频道子系统(telegram、whatsapp、slack等)始终只折叠为频道名称。 - 按子系统划分的子日志记录器(自动添加前缀 + 结构化字段
{ subsystem })。 - 用于 QR/UX 输出的
logRaw()(无前缀、无格式化)。 - 控制台样式:
pretty|compact|json。 - 控制台日志级别与文件日志级别分离(当
logging.level为debug/trace时,文件会保留完整详细信息)。 - WhatsApp 消息正文以
debug级别记录(使用--verbose查看)。