Logrotate

logrotate 的 sharedscripts 設置是否適用於所有已處理的日誌,還是僅適用於目前上下文中的日誌?

  • February 25, 2014

所以我有一些我喜歡在開發人員框中使用 logrotate 處理的 apache 日誌。其中一些用於使用者沙箱,另一些用於暫存版本等。

logrotate 配置如下所示:

/srv/www/logs/beta/*log
/srv/www/logs/www/*log
/home/developerx/logs/*.log {
   daily
   rotate 100
   olddir archive
   sharedscripts
   postrotate
       /sbin/service httpd reload > /dev/null 2>/dev/null || true
   endscript
}

我想為 beta 與沙盒自定義一些設置,例如旋轉 10 而不是沙盒的 100。我可以為此創建一個新的上下文,但如果我為多個上下文執行後旋轉“重新載入”,我擔心該過程會被重新載入多次。

作為第二個問題,有沒有辦法確定 logrotate 處理這些條目的順序?按文件名字母順序排列,文件中的倒數第一?

是的,如果你寫一個單獨的條目,並且它會有一個重新載入命令,那麼 http 伺服器將被重新載入兩次。

我相信 logrotate 正如您所描述的那樣應用規則。它包括 logrotate.d 目錄中的文件,並且只通過它們,從第一個到最後一個條目。我有一個基於這個事實的 logrotate 監控:一組特別棘手的文件中的最後一條規則有一個 postrotate 腳本,它回顯date +%j到一個狀態文件。

您可以使用logrotate -d -f /etc/logrotate.conf-d 代表“調試”的位置檢查以上所有內容。

但是,Apache 可以使用 rotatelogs 作為自定義記錄器,並且CustomLog 指令對於您擁有的每個站點都可能不同,因此您可以以不同的方式處理不同的日誌並消除重新載入問題。

引用自:https://serverfault.com/questions/578042