使用 rsyslogd 手动旋转日志文件

kbe*_*bec 12 log-files logrotate rsyslog debian-squeeze

我想使用 强制日志文件轮换logrotate -f /var/log/syslog,但它只是返回音调:

error: syslog:1 unknown option 'May' -- ignoring line
error: syslog:1 unexpected text
Run Code Online (Sandbox Code Playgroud)

我知道在这个系统上 rsyslogd 正在运行。如何旋转/var/log/syslog?我想要它是空的。

Eig*_*ony 25

您不会logrotate在命令行上告诉要轮换哪个文件。你传递给它一个配置文件。因此,在您的情况下,logrotate正在阅读/var/log/syslog并尝试将其解析为配置文件并失败(因此您的错误)。

如果你想旋转/var/log/syslog它需要在logrotate某个地方的配置文件中列出,你只需运行logrotate. 如果它最近旋转,则logrotate -f强制它再次执行。

这是/var/log/syslog来自 Debian的示例条目,

/var/log/syslog
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d rsyslog reload > /dev/null
        endscript
}
Run Code Online (Sandbox Code Playgroud)

所以,你需要在一个文件中,通常/etc/logrotate.conf或者作为一个文件片段来/etc/logrotate.d假设你的/etc/logrotate.conf观点,然后你只需运行logrotate /etc/logrotate.conf.

由于您正在运行 Debian,这可能已经全部就绪,您实际需要做的就是运行logrotate -f /etc/logrotate.conf(注意,这将轮换当前在 logrotate 中配置的每个日志)。

如果您真的只想旋转/var/log/syslog,则需要根据/etc/logrotate.conf+的内容创建一个仅记录该日志的配置文件/etc/logrotate.d/rsyslog