Logging
滾動日誌文件而不失去任何日誌事件
我有一個 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
語法中的註釋,因此請確保將它們從您的實時配置文件中刪除。