Apache-2.2
Apache單個ErrorLog,許多VirtualHosts
我有一個帶有許多(數千個)虛擬主機的網路伺服器。使用目前配置,Apache 為每個 VirtualHost 填充 2 個文件:error.log + access.log。Apache 在 prefork 模式下工作,為了避免同時打開許多文件描述符,我希望所有 VirtualHosts 都有一個 access.log 和 error.log。
CRON 任務將每天為每個 VirtualHost 拆分文件一次,因此我需要 *.log 文件的每一行上的 VirtualHost 名稱。這對於 access.log 來說非常容易:
LogFormat "%V:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined CustomLog /var/log/apache2/vhosts_access.log vhost_combined
%V 為我提供了 VirtualHost 名稱,這足以拆分文件。
但我只是找不到 ErrorLog 的等效設置。
問題:
- 在您看來,嘗試辨識每個 error.log 行的來源是否相關
- 你知道解決方案嗎?
ErrorLog``Apache
無法自定義指令。如果您的意圖是減少 FD,使用單個訪問日誌、數千個虛擬主機,您將至少減少 n*virtualhosts(FD)。
我的建議是為每個 VH 保留錯誤日誌,正如您所說,拆分您的訪問日誌,因為您已經這樣做了。
如果必須配置單個錯誤日誌,error_log 中的每個條目在 access_log 中都有相應的條目,因此使用一些 perl 魔法你可以完成工作,但我認為這不值得努力,因為它需要一些處理時間,而且很容易出錯。