Apache-2.2

Apache單個ErrorLog,許多VirtualHosts

  • October 22, 2010

我有一個帶有許多(數千個)虛擬主機的網路伺服器。使用目前配置,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 的等效設置。

問題:

  1. 在您看來,嘗試辨識每個 error.log 行的來源是否相關
  2. 你知道解決方案嗎?

ErrorLog``Apache無法自定義指令。

如果您的意圖是減少 FD,使用單個訪問日誌、數千個虛擬主機,您將至少減少 n*virtualhosts(FD)。

我的建議是為每個 VH 保留錯誤日誌,正如您所說,拆分您的訪問日誌,因為您已經這樣做了。

如果必須配置單個錯誤日誌,error_log 中的每個條目在 access_log 中都有相應的條目,因此使用一些 perl 魔法你可以完成工作,但我認為這不值得努力,因為它需要一些處理時間,而且很容易出錯。

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