linux日志按日期自动分割

要实现 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 会在每天凌晨(系统默认触发时间)自动执行:
    1. 将当前 vllm.log 重命名为 vllm.log-20251120(按日期);
    2. 创建新的空 vllm.log 供 vLLM 继续输出;
    3. 压缩 2 天前的旧日志(delaycompress 效果);
    4. 超过 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),配置简单,实时拆分,快速上手。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值