Ich habe etwa 10 virtuelle Hosts und möchte die Fehlerprotokolle getrennt halten. Seit Kurzem muss ich die Fehlerprotokolle auch alle für einige Mod_Security-Scans zusammenfassen.
Wenn ich 2 ErrorLogs für eine Test-VirtualDomain definiere, stelle ich fest, dass keine Fehler protokolliert werden. Ziemlich seltsam.
Ist es möglich, dass ein benutzerdefiniertes Protokoll die Rolle eines Fehlerprotokolls übernimmt?
Oder definiere ich meine 2 ErrorLogs falsch?
<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>
Antwort1
Nein, es ist nicht möglich, zwei ErrorLog-Direktiven pro VirtualHost zu haben. Sie können jedoch die Fähigkeit von Apache nutzen, an einen Befehl weiterzuleiten, um mit dem UNIX-Befehl „tee“ in zwei (oder mehr) Dateien zu protokollieren:
Fehlerprotokoll "|/usr/bin/tee -a /var/log/apache/error-1.log /var/log/apache/error-2.log"
Antwort2
Entsprechend derApache 2.4-Protokolldokumentation:
Standardmäßig wird der Piped-Log-Prozess ohne Aufruf einer Shell gestartet. Verwenden Sie "|$" statt "|", um ihn mit einer Shell zu starten (normalerweise mit /bin/sh -c):
Dies war das Standardverhalten für Apache 2.2.
Beispiel:
# 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"
Ein weiteres Problem, auf das ich gestoßen bin:
- Zwischen dem Anführungszeichen und dem Strich sollte kein Leerzeichen stehen.
"|$ ...
ist gültig." |$ ...
ist nicht.