ManusAI部署后,日志文件持续增长至数十GB,磁盘空间告急、系统响应缓慢、备份无法完成、甚至容器启动超时——这已经是不可忽视的严重问题。更关键的是,这些日志并非普通应用日志,而是AI任务执行链中各工作节点(Tool Executor、LLM Gateway、File Processor等)实时写入的结构化日志,直接删除文件会导致正在运行的推理流水线立即中断。因此,必须采取安全有效的措施来清理并彻底消除这一隐患。

确认日志路径与活跃状态
第一步,进入ManusAI部署目录,先用 docker-compose ps 查看服务状态——确认 manus-llm、manus-tool 等核心容器均处于 Up 运行状态,再进行后续操作。
第二步,执行 docker exec -it manus-llm ls -lh /app/logs/,观察日志文件大小和修改时间。如果看到类似 executor.log.2026-06-28、gateway.log.1 这样带日期或数字后缀的文件,说明logrotate已启用但配置可能不合理;如果只有孤零零一个 executor.log 且体积超过5GB,则表示未启用轮转,需要紧急处理。
第三步,使用 lsof -p $(pgrep -f "uvicorn.*main:app") | grep log 检查Python进程是否正持有日志文件句柄。如果返回结果中包含 /app/logs/executor.log,说明该文件正被实时写入,绝不能直接 rm 删除,只能清空内容。
安全清空正在写入的日志文件
完成确认后即可动手。以下三种方法均可安全清空正被写入的日志文件,推荐优先使用第一种。
方法一:重定向截断(零风险,推荐)
执行 docker exec -it manus-llm sh -c "> /app/logs/executor.log"。此命令将文件内容置空,但保留inode、权限和进程句柄。后续日志会继续追加写入同一文件,服务完全无感,堪称优雅。
方法二:truncate强制归零
执行 docker exec -it manus-llm truncate -s 0 /app/logs/gateway.log。该方法比重定向更底层,对百兆级别的日志响应更快。但请注意:此命令仅适用于ManusAI容器内 /app/logs 路径下的自定义日志,切勿用于处理系统 /var/log/syslog 等文件。
方法三:cat /dev/null注入
执行 docker exec -it manus-llm sh -c "cat /dev/null > /app/logs/fileprocessor.log"。效果与方法一相同,但语义更明确,适合写入自动化脚本。
永久解决日志膨胀问题
单次清空只是治标,要想一劳永逸,需为日志配置轮转机制。
第一步,进入ManusAI配置目录,打开 config/logging.yaml。找到 handlers: file: filename: 字段,确认当前日志路径为 /app/logs/executor.log。
第二步,在该handlers区块下方添加轮转配置:
class: logging.handlers.RotatingFileHandler
maxBytes: 10485760 # 10MB
backupCount: 5 # 保留5个历史文件
第三步,重启服务使配置生效:docker-compose down → docker-compose up -d。重启后查看 /app/logs/ 目录,应能看到 executor.log.1、executor.log.2 等滚动文件,主日志将不再突破10MB。
第四步,验证轮转效果——触发一次AI任务,例如上传一个PDF并提问,等待任务完成。接着执行 docker exec -it manus-llm ls -1 /app/logs/ | wc -l。输出值应稳定在6(1个主日志+5个备份)。若超出该值,说明 backupCount 可能被其他配置覆盖,需再次检查。
