Logging

滾動日誌文件而不失去任何日誌事件

  • August 7, 2018

我有一個 8GB 的​​文件呼叫php.log了一個正在執行的 php 腳本登錄到它。記錄每個事件對我來說很重要,我想在不停止 Web 伺服器的情況下壓縮它並清空目前文件。

如果我執行:

   mv php.log php.log.backup20140305-01
   touch php.log

我會失去一些數據。我怎樣才能在不失去任何數據的情況下做到這一點?

您會發現更容易配置logrotate為您進行輪換。如果您創建一個名為/etc/logrotate.d/php包含以下內容的文件,它將自動處理日誌輪換。這只是一個指南,因此請確保在將其投入生產之前對其進行測試和定制。

/path/to/php.log {
   daily  
   missingok              # don't rotate if the file isn't there...
   notifempty             # ...or if it's zero-length
   rotate 30              # keep 30 days' worth of logs
   compress               # gzip the logs, but...
   delaycompress          # ...only after they're over a day old
   create 640 root adm    # permissions with which to create new files
   sharedscripts
   postrotate
       /etc/init.d/apache2 graceful    # or whatever makes your process let go of the log file
   endscript
}

注意:此提取中斷logrotate語法中的註釋,因此請確保將它們從您的實時配置文件中刪除。

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