[log]利用logrotate對Linux log進行管理


轉自:http://feikiss.iteye.com/blog/1402181

https://linux.cn/article-4126-1.html

 

Syslog-ng服務是Linux系統中重要的日志服務,搞過Linux下日志管理的大蝦門肯定都熟悉這項服務,在此就不再贅述。現在談一下對日志文件的管理問題。 

Syslog-ng服務只提供對log進行接收以及再處理(繼續分發或者存儲),但並不對產生的log文件進行管理,這樣導致的后果就是可能這個文件越來越大,在我們這個項目中,由於忘了對日志文件進行管理,結果導致這個日志文件20多G,囧,很有可能導致系統崩潰。 

日志文件管理這項工作其實是由logrotate模塊來負責。 

填充文件

# head -c 10M < /dev/urandom > /var/log/log-file


對於logrotate可以參考官網, 上面有詳盡的介紹,最常用的三個方式為: 

  • logrotate /etc/logrotate.conf:重新讀取配置文件,並對符合條件的文件文件進行rotate。 
  • logrotate -d /etc/logrotate.conf:調試模式,輸出調試結果,但並不執行。 
  • logrotate -f /etc/logrotate.conf:強制模式,對所有相關文件進行rotate。 


至於logrotate對文件進行管理時的所要執行的規則,可以在/etc/logrotate.d文件夾下創建文件,logrotate會在執行的時候自動讀取相應的規則,比如,我在/etc/logrotate.d/路徑下新建了一個名為syslog的文件,其中的內容為: 

Shell代碼  
/log/test.log  
{  
         size 10M  
         create  
         start 10  
         rotate 4  
         compress  
         copytruncate  
}  

上面代碼的意思為當文件/log/test.log的大小超過10M時就開始循環,允許logrotate創建文件,循環文件的開始為10,即文件為為test.log.10.gz,最多循環創建4個文件,即為test.log.13.gz,多於四個后開始在第一個上面循環,依次迭代。 

  這樣在配置logrotate的規則的時候就相對非常靈活,當我需求改動,需要添加其他新的規則的時候,我就不必修改syslog文件中的規則,可以新創建一個文件,添加相應的規則即可。這種靈活的配置方式對編程來說是一大便利,對於編程來說就是更容易實現對規則的自動控制了。 

另外的一個問題,logrotate規則配置好后怎么定時去執行呢?這個就可以交給Linux中的crontab來控制了,具體的crontab的配置可以參考官網,我這里給出我使用的demo: 
執行:vi /etc/crontab 
配置如下: 

Shell代碼 
*/5 * * * * root /sbin/logrotate /etc/logrotate.conf  

表示每隔5分鍾執行檢查一次。 
這樣整個配置就基本上完成了。

  • monthly: 日志文件將按月輪循。其它可用值為‘daily’,‘weekly’或者‘yearly’。
  • rotate 5: 一次將存儲5個歸檔日志。對於第六個歸檔,時間最久的歸檔將被刪除。
  • compress: 在輪循任務完成后,已輪循的歸檔將使用gzip進行壓縮。
  • delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。
  • missingok: 在日志輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。
  • notifempty: 如果日志文件為空,輪循不會進行。
  • create 644 root root: 以指定的權限創建全新的日志文件,同時logrotate也會重命名原始日志文件。
  • postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM