【Bug已解决】openclaw log file too large / Disk space exhausted by logs — OpenClaw 日志文件过大解决方案

📅 2026/7/12 2:17:51 👁️ 阅读次数 📝 编程学习
【Bug已解决】openclaw log file too large / Disk space exhausted by logs — OpenClaw 日志文件过大解决方案

【Bug已解决】openclaw: "log file too large" / Disk space exhausted by logs — OpenClaw 日志文件过大解决方案

1. 问题描述

OpenClaw 的日志文件占用过多磁盘空间:

# 日志文件过大 $ ls -lh ~/.openclaw/logs/ -rw-r--r-- 1 user user 5.2G debug.log -rw-r--r-- 1 user user 3.8G session.log # 或磁盘空间不足 $ openclaw "task" Error: No space left on device Cannot write to ~/.openclaw/logs/debug.log # 或日志导致系统卡顿 $ openclaw "task" # 系统响应慢,因为日志文件太大 # 或日志轮转未配置 $ ls -lh ~/.openclaw/logs/ # 只有一个巨大的日志文件,没有轮转

这个问题在以下场景中特别常见:

  • 日志级别过高(debug)
  • 日志轮转未配置
  • 长时间运行
  • 大量请求
  • 日志未清理
  • 磁盘空间不足

2. 原因分析

原因分类表

原因分类具体表现占比
日志级别高debug约 35%
无轮转单文件约 25%
长时间运行累积约 15%
大量请求频繁约 15%
未清理历史日志约 5%
磁盘不足小磁盘约 5%

3. 解决方案

方案一:清除日志文件(最推荐)

# 步骤 1:检查日志大小 du -sh ~/.openclaw/logs/ # 步骤 2:清除旧日志 rm ~/.openclaw/logs/*.log # 或只保留最近的 find ~/.openclaw/logs/ -name "*.log" -mtime +7 -delete # 步骤 3:或截断(不删除文件) truncate -s 0 ~/.openclaw/logs/debug.log # 步骤 4:验证 du -sh ~/.openclaw/logs/ openclaw "task"

方案二:降低日志级别

# 步骤 1:检查当前日志级别 cat .openclaw/config.json | grep -i log # 步骤 2:降低级别 cat > .openclaw/config.json << 'EOF' { "model": "claude-sonnet-4-20250514", "logLevel": "warn" } EOF # 步骤 3:或环境变量 export OPENCLAW_LOG_LEVEL=warn # 步骤 4:验证 python3 -m json.tool .openclaw/config.json openclaw "task"

方案三:配置日志轮转

# 步骤 1:使用 logrotate cat > /etc/logrotate.d/openclaw << 'EOF' ~/.openclaw/logs/*.log { daily rotate 7 compress missingok notifempty size 100M } EOF # 步骤 2:手动轮转 logrotate -f /etc/logrotate.d/openclaw # 步骤 3:或使用 cron echo "0 0 * * * find ~/.openclaw/logs/ -name '*.log' -mtime +7 -delete" | crontab # 步骤 4:验证 ls -lh ~/.openclaw/logs/

方案四:禁用日志

# 步骤 1:禁用日志 export OPENCLAW_LOG_ENABLED=false # 步骤 2:或配置 cat > .openclaw/config.json << 'EOF' { "logLevel": "error", "logEnabled": false } EOF # 步骤 3:永久设置 echo 'export OPENCLAW_LOG_ENABLED=false' >> ~/.bashrc source ~/.bashrc # 步骤 4:验证 openclaw "task" ls -lh ~/.openclaw/logs/

方案五:使用 --quiet

# 步骤 1:使用 --quiet 减少输出 openclaw --quiet "task" # 步骤 2:或 --silent openclaw --silent "task" # 步骤 3:CI/CD 中 openclaw --quiet --print "task" 2>&1 # 步骤 4:验证 openclaw --quiet --print "hello"

方案六:移动日志到其他磁盘

# 步骤 1:创建日志目录 mkdir -p /external/logs/openclaw # 步骤 2:软链接 mv ~/.openclaw/logs /external/logs/openclaw/logs ln -s /external/logs/openclaw/logs ~/.openclaw/logs # 步骤 3:或配置日志路径 cat > .openclaw/config.json << 'EOF' { "logPath": "/external/logs/openclaw" } EOF # 步骤 4:验证 openclaw "task" ls -lh /external/logs/openclaw/

4. 各方案对比总结

方案适用场景推荐指数难度
方案一:清除即时⭐⭐⭐⭐⭐
方案二:降级别长期⭐⭐⭐⭐⭐
方案三:轮转长期⭐⭐⭐⭐⭐
方案四:禁用极端⭐⭐⭐
方案五:--quiet临时⭐⭐⭐⭐
方案六:移动磁盘⭐⭐⭐

5. 常见问题 FAQ

5.1 日志文件在哪里

通常在~/.openclaw/logs/目录下。

5.2 如何检查日志大小

du -sh ~/.openclaw/logs/ ls -lh ~/.openclaw/logs/

5.3 如何清除日志

rm ~/.openclaw/logs/*.log # 或 truncate -s 0 ~/.openclaw/logs/debug.log

5.4 日志级别有哪些

error<warn<info<debug。使用warnerror减少日志量。

5.5 如何配置日志轮转

使用logrotatecron定期清理旧日志。

5.6 如何禁用日志

export OPENCLAW_LOG_ENABLED=false

5.7 --quiet 有什么用

减少控制台输出,但不影响日志文件。

5.8 日志导致磁盘满

清除日志 + 降低级别 + 配置轮转。

5.9 如何自动清理

echo "0 0 * * * find ~/.openclaw/logs/ -name '*.log' -mtime +7 -delete" | crontab

5.10 排查清单速查表

□ 1. du -sh ~/.openclaw/logs/ 检查大小 □ 2. rm *.log 清除日志 □ 3. truncate -s 0 截断 □ 4. logLevel: warn 降低级别 □ 5. OPENCLAW_LOG_LEVEL=warn 环境变量 □ 6. logrotate 配置轮转 □ 7. cron 定期清理 □ 8. OPENCLAW_LOG_ENABLED=false 禁用 □ 9. --quiet 减少输出 □ 10. logPath 移动到其他磁盘

6. 总结

  1. 根本原因:日志过大最常见原因是日志级别过高(35%)和日志轮转未配置(25%)
  2. 最佳实践:使用rm ~/.openclaw/logs/*.log清除日志,降低级别到warn
  3. 日志轮转:配置logrotatecron定期清理旧日志
  4. 降低级别:设置"logLevel": "warn"减少日志量
  5. 最佳实践建议:使用OPENCLAW_LOG_LEVEL=warn+logrotate+ 定期清理

故障排查流程图

flowchart TD A[日志文件过大] --> B[du -sh 检查大小] B --> C[清除日志] C --> D[rm *.log 或 truncate] D --> E[openclaw "task" 验证] E --> F{磁盘正常?} F -->|是| G[降低日志级别] F -->|否| H[清除更多文件] H --> C G --> I[logLevel: warn] I --> j[OPENCLAW_LOG_LEVEL=warn] j --> K[配置日志轮转] K --> L[logrotate 或 cron] L --> M[定期清理 7 天以上] M --> E E --> N{日志增长慢?} N -->|是| O[✅ 问题解决] N -->|否| P[禁用日志] P --> Q[OPENCLAW_LOG_ENABLED=false] Q --> R[或 logLevel: error] R --> E E --> S{成功?} S -->|是| O S -->|否| T[移动到其他磁盘] T --> U[logPath: /external/logs] U --> E O --> V[长期: warn + 轮转 + 清理] V --> W[✅ 长期方案]