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

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

我有大約 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 [email protected]
    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>

答案1

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

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

答案2

根據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"

我遇到的另一個問題:

  • 雙引號和欄之間不應有空格。
    • "|$ ...已驗證。
    • " |$ ...不是。

相關內容