Samba auditログをrsyslogで取得する機能を実装中、logrotate後にログファイルが更新されず一瞬詰まったので、解決方法を共有させて頂きます。
問題
/etc/rsyslog.d/sample.conf
local5.* /mnt/system/logs/samba/audit.log;RSYSLOG_FileFormat
/etc/logrotate.d/sample
/mnt/system/logs/samba/audit.log {
create 0644 syslog adm
ifempty
dateext
dateformat .%Y-%m-%d
maxsize 5G
missingok
compress
monthly
rotate 12
}
上記のように、rsyslogでログを取得している場合、logrotateが実行された後にログファイルが更新されなくなってしまいました。
解決方法
logrotateが実行された後、systemctl restart rsyslog
すると直りました。
これを以下の通りlogrotateの postrotate で自動化して解決しました。
/etc/logrotate.d/sample
/mnt/system/logs/samba/audit.log {
create 0644 syslog adm
ifempty
dateext
dateformat .%Y-%m-%d
maxsize 5G
missingok
compress
monthly
rotate 12
+ postrotate
+ /bin/systemctl restart rsyslog
+ endscript
}
ちょっと書き方独特ですね。endscriptをお忘れなく。
以上!