Windows
如何在不中斷服務的情況下在 Windows 上輪換 apache 日誌?
我管理執行 Apache2 和 ColdFusion 的 Windows Server 2003(標準版,32 位)安裝。伺服器有超過 100 台虛擬主機,每台都有訪問日誌和錯誤日誌。我一直在尋找經典 Linux **logrotate**命令的模擬(或 win32 埠),它允許日誌文件輪換而不中斷 Apache 的鎖定機制。
我找到的每一個解決方案,包括**chomp、名稱衝突的logrotate** bash 腳本、**apachelogrot**和幾個 Perl 日誌輪換腳本;他們都:
- 停止阿帕奇
- 旋轉日誌
- 啟動阿帕奇
顯然,這對於如此多的虛擬主機是不可取的,因為它每晚會停止和重新啟動 Apache 數百次。
我還使用apache 附帶的**rotatelogs和cronolog**進行了調查,後者使用管道輸出創建單獨的每日/每週/每月日誌。這些程序不需要重新啟動 apache 來輪換日誌,但它們會為每個日誌文件生成一個程序實例,從而導致數百個額外的守護程序執行,每個程序消耗 200-300k 記憶體。
我還嘗試在 cygwin 上編譯經典的 Linux logrotate命令,但沒有成功。
你們中有人對我接下來應該嘗試什麼有什麼建議嗎? 或者,更好的是,你們中的任何人有沒有設法讓經典的 Linux **logrotate**命令在 cygwin 或任何其他 win32 編譯器上編譯?
作為一種解決方法,您可以切換到對所有虛擬主機使用單個日誌,並使用
split-logfile
或類似的方式對它們進行後處理(將它們放入每個虛擬主機的單獨日誌中)。這在 Apache 的文件中被推薦。不確定它是否是您環境中的一個選項。