我有大約 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
預設情況下,管道日誌進程是在不呼叫 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"
我遇到的另一個問題:
- 雙引號和欄之間不應有空格。
"|$ ...
已驗證。" |$ ...
不是。