要实现 vLLM 日志按日期拆分(每天一个独立日志文件),核心是用 日志轮转工具 替代直接重定向到固定文件。推荐两种简单可靠的方案,适用于 Linux 环境:
方案一:用 logrotate(推荐,系统级自动轮转,无需额外进程)
logrotate 是 Linux 内置的日志轮转工具,支持按日期 / 大小 / 文件数拆分日志,自动压缩旧日志,配置后无需手动干预。
步骤 1:创建 logrotate 配置文件
创建针对 vLLM 日志的配置文件(比如 /etc/logrotate.d/vllm):
sudo vim /etc/logrotate.d/vllm
步骤 2:写入配置内容
粘贴以下配置(根据需求调整参数):
# 日志文件路径(对应你原来的 vllm.log)
/root/vllm.log {
# 按日期轮转(每天生成一个新文件)
daily
# 保留 7 天的旧日志(超过自动删除,可改 30 保留1个月)
rotate 7
# 轮转时创建新文件(权限、所有者)
create 0644 root root
# 只在日志文件非空时才轮转
notifempty
# 压缩旧日志(.gz 格式,节省空间)
compress
# 延迟压缩(避免刚轮转就压缩,方便临时查看)
delaycompress
# 轮转后给新日志文件重命名(按日期格式)
dateext
# 日期格式(例如:vllm.log-20251120)
dateformat -%Y%m%d
# 忽略日志文件不存在的错误
missingok
# 轮转前先清空原文件(不影响正在运行的 vLLM 进程)
copytruncate
}
步骤 3:启动 vLLM(日志仍输出到固定文件)
无需修改启动命令,依然用原来的方式启动(日志还是写入 vllm.log):
vllm serve /root/models/qwen3 > /root/vllm.log 2>&1 &
原理
logrotate会在每天凌晨(系统默认触发时间)自动执行:- 将当前
vllm.log重命名为vllm.log-20251120(按日期); - 创建新的空
vllm.log供 vLLM 继续输出; - 压缩 2 天前的旧日志(
delaycompress效果); - 超过 7 天的日志自动删除。
- 将当前
手动测试(可选)
如果想立即验证配置是否生效,可手动触发轮转:
sudo logrotate -f /etc/logrotate.d/vllm
执行后会生成第一个日期命名的日志文件,原 vllm.log 被清空并继续接收新日志。
方案二:用 cronolog(轻量工具,实时按日期拆分,无需等待凌晨)
如果需要 日志实时按日期拆分(比如当天 0 点后立即切换到新文件,无需等 logrotate 触发),可使用 cronolog 工具,直接将日志按日期格式输出。
步骤 1:安装 cronolog
# Ubuntu/Debian
sudo apt-get install cronolog
# CentOS/RHEL
sudo yum install cronolog
# 源码安装(如果系统没有包管理器)
wget https://downloads.sourceforge.net/project/cronolog/cronolog/cronolog-1.6.2/cronolog-1.6.2.tar.gz
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure && make && sudo make install
步骤 2:修改 vLLM 启动命令
将日志通过管道传给 cronolog,按日期生成日志文件(格式:vllm-20251120.log):
vllm serve /root/models/qwen3 2>&1 | cronolog /root/vllm-%Y%m%d.log &
参数说明
%Y:4 位年份(如 2025);%m:2 位月份(如 11);%d:2 位日期(如 20);- 日志路径可自定义(比如
/var/log/vllm-%Y%m%d.log)。
原理
cronolog会实时监听管道输入,当系统时间跨天时,自动切换到新的日期命名文件,无需手动干预;- 旧日志文件直接以日期命名,无需后续轮转,适合追求简单实时拆分的场景。
两种方案对比
| 特性 | logrotate(方案一) | cronolog(方案二) |
|---|---|---|
| 触发方式 | 定时(默认凌晨)/ 手动 | 实时(跨天自动切换) |
| 日志压缩 | 支持(自动压缩旧日志) | 不支持(需手动压缩旧日志) |
| 旧日志清理 | 自动(按 rotate 配置保留天数) | 需手动清理(或搭配 logrotate) |
| 配置复杂度 | 略高(需写配置文件) | 极低(仅修改启动命令) |
| 对进程影响 | 无(copytruncate 不中断进程) | 无(管道不影响 vLLM 运行) |
推荐场景
- 生产环境:选 方案一(logrotate),自动压缩 + 清理,无需额外维护;
- 测试 / 临时场景:选 方案二(cronolog),配置简单,实时拆分,快速上手。

1190

被折叠的 条评论
为什么被折叠?



