Rsyslog 轮换,但仍记录到旧日志

Rsyslog 轮换,但仍记录到旧日志

服务器:Ubuntu Server 14.04

我有一个 Watchguard Firebox 正在向服务器记录日志。它应该每天轮换,但是,当轮换发生时,它不会写入新日志。它继续写入上一个日志。

配置在/etc/logrotate.d/

/var/log/watchguard
{
    rotate 14
    daily
    missingok
    create 640 syslog adm
    compress
    delaycompress
    sharedscripts
    su root syslog
    postrotate
            /usr/sbin/service rsyslog reload >/dev/null 2>&1 || true
    endscript
}

如您所见,旋转正在发生,但最新日志尚未写入:

-rw-r----- 1 syslog    adm        20 Jan 17 02:30 watchguard.3.gz
-rw-r----- 1 syslog    adm        20 Jan 18 02:30 watchguard.2.gz
-rw-r----- 1 syslog    adm         0 Jan 20 02:30 watchguard <---- SHOULD CONTAIN DATA
-rw-r----- 1 syslog    adm      3.0G Jan 20 10:34 watchguard.1 <--- ROTATED, BUT STILL GETTING DATA

好像它并不关心文件的名称。它只是继续写入。我的logrotate配置语法不正确吗?

答案1

我把postrotate脚本全部删除,然后添加了copytruncate。检查了过去几天的日志,发现它正在轮换,并使用最新的日志。如果有更好的方法,欢迎大家提出意见,但这对我来说很有效。

/var/log/watchguard
{
    rotate 14
    daily
    missingok
    create 640 syslog adm
    compress
    delaycompress
    su root syslog
    copytruncate
}

工作得很好!

-rw-r----- 1 syslog    adm      336M Jan 27 02:34 watchguard.2.gz
-rw-r----- 1 syslog    adm      5.2G Jan 28 02:34 watchguard.1
-rw-r----- 1 syslog    adm      950M Jan 28 08:02 watchguard

相关内容