Linux

logrotation 正在壓縮格式不正確的日誌文件

  • September 2, 2021

我在我的虛擬機上啟用了以下 logrotation,但不知何故,日誌以不正確的格式壓縮。

日誌輪換

/logs/springboot/*.log*
{

   missingok
   minsize 100M
   copytruncate
   notifempty
   sharedscripts
   compress
   rotate 5
   postrotate
   endscript
}

下面是日誌是如何用 0 字節壓縮的

-rw------- 1 message message  Aug 12 19:45 message.2021-08-01.6.log.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz
-rw------- 1 message message  Aug 12 19:45 message.2021-08-01.7.log.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz
-rw------- 1 message message  Aug 12 19:45 message.2021-08-01.8.log.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz
-rw------- 1 message message  Aug 12 19:45 message.2021-08-01.9.log.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz

發生此問題是否有原因?由於此 cron 作業失敗並出現以下錯誤。我嘗試使用調試模式執行 logrotation,下面是 stopper..

**compressing log with: /bin/gzip**
removing old log /logs/springboot/message.2021-07-26.0.log.1.gz.1.1.1.1.1.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.1.1.1.1.1.gz.6.gz
error: error opening /logs/springboot/message.2021-07-26.0.log.1.gz.1.1.1.1.1.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.1.1.1.1.1.gz.1.gz.1.1.1.1.1.1.gz.6.gz: **File name too long**

您的模式 ,/logs/springboot/*.log*不僅匹配您要輪換的日誌文件,還匹配輪換的日誌。

因此,它匹配這兩個文件名:

  • message.2021-08-01.6.log
  • message.2021-08-01.6.log.1.gz

這意味著它將開始旋轉已經旋轉和壓縮的文件,.1.gz每次都添加。

使您的模式更具限制性,以避免匹配旋轉的日誌文件。例如,用於/logs/springboot/*.log僅匹配以 . 結尾的文件名.log。或者更好的是,使用/logs/springboot/message.*.log因為您知道您的日誌文件也有一個靜態文件名前綴。

引用自:https://unix.stackexchange.com/questions/667306