Ist es möglich, in Apache zwei Fehlerprotokolle pro virtuellem Host zu haben?

Ist es möglich, in Apache zwei Fehlerprotokolle pro virtuellem Host zu haben?

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.

verwandte Informationen