Windows

如何在不中斷服務的情況下在 Windows 上輪換 apache 日誌?

  • September 1, 2020

我管理執行 Apache2 和 ColdFusion 的 Windows Server 2003(標準版,32 位)安裝。伺服器有超過 100 台虛擬主機,每台都有訪問日誌和錯誤日誌。我一直在尋找經典 Linux **logrotate**命令的模擬(或 win32 埠),它允許日誌文件輪換而不中斷 Apache 的鎖定機制。

我找到的每一個解決方案,包括**chomp、名稱衝突的logrotate** bash 腳本、**apachelogrot**和幾個 Perl 日誌輪換腳本;他們都:

  • 停止阿帕奇
  • 旋轉日誌
  • 啟動阿帕奇

顯然,這對於如此多的虛擬主機是不可取的,因為它每晚會停止和重新啟動 Apache 數百次。

我還使用apache 附帶的**rotatelogscronolog**進行了調查,後者使用管​​道輸出創建單獨的每日/每週/每月日誌。這些程序不需要重新啟動 apache 來輪換日誌,但它們會為每個日誌文件生成一個程序實例,從而導致數百個額外的守護程序執行,每個程序消耗 200-300k 記憶體。

我還嘗試在 cygwin 上編譯經典的 Linux logrotate命令,但沒有成功。

你們中有人對我接下來應該嘗試什麼有什麼建議嗎? 或者,更好的是,你們中的任何人有沒有設法讓經典的 Linux **logrotate**命令在 cygwin 或任何其他 win32 編譯器上編譯?

作為一種解決方法,您可以切換到對所有虛擬主機使用單個日誌,並使用split-logfile或類似的方式對它們進行後處理(將它們放入每個虛擬主機的單獨日誌中)。在 Apache 的文件中被推薦。不確定它是否是您環境中的一個選項。

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