Appearance
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 f52752889b(fix: 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 单独执行路径解析。