Logrotate 配置:它有效,但始终保持“当前”日志为空

Org*_*ble 4 openvpn logrotate

我将日志记录openvpn移到了自己的日志中,并尝试为其设置日志轮换,但显然我做错了什么。

日志记录根据需要发生,但总是在第二个日志文件中openvpn.log.1。“当前”日志文件openvpn.log存在,但始终为空。

-rw------- 1 root root     0 Apr 20 07:35 openvpn.log
-rw------- 1 root root  5411 Apr 20 07:58 openvpn.log.1
Run Code Online (Sandbox Code Playgroud)

这是我的 openvpn 的 logrotate 配置文件。

/var/log/openvpn.log {
       daily
       rotate 7
       delaycompress
       compress
       notifempty
       missingok
}
Run Code Online (Sandbox Code Playgroud)

Openvpn 中server.conf关于日志记录的那一行是

log-append /var/log/openvpn.log

我搞砸了什么?

miv*_*ivk 8

根据openvpn-users 邮件列表上的这篇旧帖子

openvpn 日志记录是通过将 stdout/stderr 重定向到日志文件来完成的

所以解决办法是使用copytruncatelogrotate配置中的选项:

复制截断

创建副本后,将原始日志文件原地截断为零大小,而不是移动旧日志文件并可选择创建新日志文件。当某些程序无法被告知关闭其日志文件并因此可能永远继续写入(附加)到前一个日志文件时,可以使用它。请注意,复制文件和截断文件之间的时间片非常短,因此可能会丢失一些日志记录数据。使用此选项时,创建选项将无效,因为旧日志文件保留在原处。

这是我的/etc/logrotate.d/openvpn文件中的内容:

/var/log/openvpn.log {
    weekly
    rotate 12
    copytruncate
    compress
    delaycompress
    missingok
    notifempty
}
Run Code Online (Sandbox Code Playgroud)