Logrotate
Logrotate 追加而不是替換文件名上的日期
我在 RedHat 系統上執行了 logrotate。我更改了配置以每天輪換文件夾中的所有文件。幾天后,文件列表顯示如下:
login.log-20170220 login.log-20170220-20170222 login.log-20170220-20170222-20170224 login.log-20170220-20170222-20170224-20170226 login.log-20170220-20170222-20170224-20170226-20170228 login.log-20170220-20170222-20170224-20170226-20170228-20170302 login.log-20170220-20170222-20170224-20170226-20170228-20170302-20170304 login.log-20170220-20170222-20170224-20170226-20170228-20170302-20170304-20170306 login.log-20170220-20170222-20170224-20170226-20170228-20170302-20170304-20170306-20170308 login.log-20170220-20170222-20170224-20170226-20170228-20170302-20170304-20170306-20170308-20170310 login.log-20170220-20170222-20170224-20170226-20170228-20170302-20170304-20170306-20170308-20170310-20170312 login.log-20170228 login.log-20170228-20170302 login.log-20170228-20170302-20170304 login.log-20170228-20170302-20170304-20170306 login.log-20170228-20170302-20170304-20170306-20170308 login.log-20170228-20170302-20170304-20170306-20170308-20170310 login.log-20170228-20170302-20170304-20170306-20170308-20170310-20170312 login.log-20170306 login.log-20170306-20170308 login.log-20170306-20170308-20170310 login.log-20170306-20170308-20170310-20170312
我在其他系統中也有相同的設置,從來沒有遇到過這個問題……這是 logrotate.d/ 中的配置
/var/log/syslog-wal/* { missingok notifempty create 0640 root wheel daily rotate 14 }
我覺得很奇怪,每 8 天就有新一輪的文件。有什麼線索嗎?該文件夾位於 /var/log 中,但我在其他標準 logrotate.d 文件中沒有看到任何可以解釋這一點的內容。
該模式
/var/log/syslog-wal/*
不僅匹配login.log
該日誌的所有輪換,還匹配該日誌的所有輪換,這意味著將輪換每個文件並在其名稱後附加日期(如果文件滿足輪換條件)。再次執行時,這些文件中的每一個都將附加日期等。
所以解決方案是只指定
/var/log/syslog-wal/login.log
,或者可能/var/log/syslog-wal/*.log
,作為模式。