我将日志记录移到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
这是我的 openvpn 的 logrotate 配置文件。
/var/log/openvpn.log {
daily
rotate 7
delaycompress
compress
notifempty
missingok
}
Openvpn 中有关日志记录的内容server.conf
是
log-append /var/log/openvpn.log
我把什么事情搞砸了?
答案1
根据这篇旧帖子在 openvpn-users 邮件列表上:
openvpn 日志记录是通过将 stdout/stderr 重定向到日志文件来完成的
所以解决方案是使用copytruncate
logrotate 配置中的选项:
复制截断
在创建副本后,将原始日志文件原地截断为零大小,而不是移动旧日志文件并选择性地创建新日志文件。当某些程序无法关闭其日志文件并因此可能继续永久写入(附加)前一个日志文件时,可以使用此选项。请注意,复制文件和截断文件之间的时间间隔非常短,因此可能会丢失一些日志数据。使用此选项时,创建选项将不起作用,因为旧日志文件保留在原处。
这是我的/etc/logrotate.d/openvpn
文件中的内容:
/var/log/openvpn.log {
weekly
rotate 12
copytruncate
compress
delaycompress
missingok
notifempty
}
答案2
您应该让您的服务了解日志轮换。某些服务可能会因 HUP 信号而被终止,而某些服务可能需要完全重启。服务可能会打开该openvpn.log
文件,并将其重命名为openvpn.log.1
。
尝试添加:
postrotate
systemctl restart openvpn.service
endscript
我不清楚您的服务具体怎么调用,所以我的猜测openvpn.service
可能是错的。