Apache-2.2

Apache 中的每個 VirtualHost 是否可以有 2 個錯誤日誌?

  • May 4, 2018

我有大約 10 個虛擬主機,我喜歡將 error_logs 分開。最近,我還需要將 error_logs 全部結合起來進行一些 mod_security 掃描。

如果我為測試 VirtualDomain 定義 2 個錯誤日誌,我注意到沒有記錄任何錯誤。很奇怪。

是否可以讓 CustomLog 扮演 ErrorLog 的角色?

還是我錯誤地定義了我的 2 個錯誤日誌?

<VirtualHost 1.2.3.4:80>
   ServerName mydomain.net
   ServerAlias www.mydomain.net mydomain.net
   DocumentRoot /var/www/html/mydomain
   ServerAdmin not@available.com
   UseCanonicalName Off

   ErrorLog logs/mydomain.net-error_log
   ErrorLog logs/unified_modsecurity-error_log

   CustomLog logs/mydomain.net-access_log combined
   UserDir disabled
   UserDir enabled mydomainuser
</VirtualHost>

不,每個 VirtualHost 不可能有兩個 ErrorLog 指令。但是,您可以使用 Apache 管道到命令的能力,以便使用 UNIX ’tee’ 命令記錄到兩個(或更多)文件:

錯誤日誌“| /usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log”

根據Apache 2.4 日誌文件

預設情況下,管道日誌程序是在不呼叫 shell 的情況下生成的。使用“|$”而不是“|” 使用 shell 生成(通常使用 /bin/sh -c):

這是 Apache 2.2 的預設行為。

例子:

# Write to files error-1.log and error-2.log, and echo to stdout
CustomLog "|$/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"

我遇到的另一個問題:

  • 雙引號和小節之間不應有空格。

    • "|$ ...已驗證。
    • " |$ ...不是。

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