我有 4 个自定义 systemd 服务写入自定义日志/var/log/
。我设置了一个logrotate
配置文件,但它没有写入最新的日志。它仍在写入旧.log.1
文件。新的已创建,只是没有数据。
这是我的 logrotate 配置:
/var/log/dealer*.log {
daily
missingok
rotate 7
delaycompress
notifempty
su root root
postrotate
/bin/systemctl reload dealer*.service > /dev/null 2>/dev/null || true
endscript
create 0644 root root
}
最新的日志文件是空的:
-rw-r--r-- 1 root root 0 Jul 12 11:39 dealerF2f.log
-rw-r--r-- 1 root root 0 Jul 12 11:39 dealerOutbound.log
-rw-r--r-- 1 root root 0 Jul 12 11:39 dealerTimeout.log
-rw-r--r-- 1 root root 0 Jul 12 11:39 dealerWeb.log
它仍在写信给.log.1
:
-rw-r--r-- 1 root root 36M Jul 12 12:52 dealerOutbound.log.1
-rw-r--r-- 1 root root 9.2M Jul 12 12:52 dealerF2f.log.1
-rw-r--r-- 1 root root 19M Jul 12 12:52 dealerWeb.log.1
-rw-r--r-- 1 root root 171M Jul 12 12:52 dealerTimeout.log.1
通常,当进程仍然打开文件时,我会看到类似的内容-它将继续写入旧文件,直到进程重新启动。
我敢打赌,如果您重新启动而不是重新加载,它将按预期工作。
如果您无法完全重新启动该过程,请查看 copytruncate 选项而不是 postrotate 脚本。