Skip to content

logging.file 配置不生效,日志仍写入 /tmp/openclaw/ 默认路径(v2026.4.15 及更早)

问题

在 OpenClaw 配置中设置 logging.file 自定义日志路径后,日志仍然写入默认路径 /tmp/openclaw/openclaw-YYYY-MM-DD.log,配置值被完全忽略。

json5
// 这段配置在受影响版本中不生效
{
  logging: {
    level: "info",
    file: "/var/log/openclaw/openclaw.log",
    consoleLevel: "warn",
  },
}

根因:commit f52752889bfix: audit clobbered config reads,2026-03-24)修改了 src/logging/config.ts 中的 readLoggingConfig() 函数,将其从使用 resolvedConfig 改为 rawConfig,导致 logging.file 配置值在解析前就被读取,实际值丢失。

该问题在 v2026.4.15 中依然存在,多个用户已确认复现。

解决方案

方案一:通过环境变量覆盖日志路径(推荐)

bash
export OPENCLAW_LOG_FILE="/var/log/openclaw/openclaw.log"
openclaw start

环境变量在配置文件读取前生效,绕过 readLoggingConfig() 的 bug。

方案二:软链接到默认路径

bash
# 创建目录
mkdir -p /var/log/openclaw

# 将 openclaw 实际写入路径软链接到自定义目录
ln -s /var/log/openclaw /tmp/openclaw

注意:这会影响所有写入 /tmp/openclaw 的日志,包括其他进程。

方案三(Docker 环境):挂载卷到默认路径

yaml
volumes:
  - /var/log/openclaw:/tmp/openclaw

根本修复:官方需要在 readLoggingConfig() 中恢复使用 resolvedConfig 而非 rawConfig,或在读取后对 logging.file 单独执行路径解析。