Siehe http://httpd.apache.org/docs/2.2/logs.html#virtualhost
Wenn CustomLog- oder ErrorLog-Anweisungen in einem Abschnitt platziert werden, werden alle Anforderungen oder Fehler für diesen virtuellen Host nur in der angegebenen Datei protokolliert. Für jeden virtuellen Host ohne Protokollierungsanweisungen werden die Anforderungen weiterhin an die Protokolle des Hauptservers gesendet.
Mit anderen Worten, wenn Sie Protokollierungsanweisungen in einen VirtualHost-Abschnitt einfügen, werden die Protokollierungsanweisungen in der Hauptserverkonfiguration überschrieben. Wenn Sie sich in einer einzelnen Protokolldatei anmelden möchten, entfernen Sie die Protokollkonfiguration aus Ihren VirtualHost-Abschnitten.
Der Einfachheit halber ziehe ich es vor, alle Access-Daten in einer einzigen Protokolldatei zu protokollieren. Später können Sie die Protokolle verarbeiten und die Protokolldateien in Protokolldateien für die virtuellen Hosts aufteilen. Das Schreiben in eine einzelne Protokolldatei ist außerdem eine effizientere Verwendung der Computerressourcen als das gleichzeitige Schreiben in 30 Protokolldateien. Stellen Sie einfach sicher, dass Ihr LogFormat '% v' enthält, das den Namen des virtuellen Hosts protokolliert.
Ist es möglich, ALLE Zugriffe und Fehler in eine gemeinsame Protokolldatei zu kopieren?
Sie können alle Fehler und den Zugriff auf eine freigegebene Protokolldatei protokollieren, die Protokolldatei ist jedoch unschön. Senden Sie zuerst die Apache-Protokolldaten an syslog und anschließend mithilfe von syslog an eine lokale Datei oder einen Remote-Protokollserver.
# Send access logs to syslog
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "|/usr/bin/logger -t httpd -i -p local7.notice" combined
# Send error logs to syslog
ErrorLog syslog:local7
Und dann in /etc/syslog.conf
# Send all HTTP log data to this file
local7.* /var/log/http-all.log
Sie haben zwei Möglichkeiten, die ErrorLog-Direktive http://httpd.apache.org/docs/2.2/mod/core.html#errorlog zu verwenden
1) Verwenden Sie syslog und führen Sie die Duplizierung in [r] syslog.conf durch
2) Verwenden Sie Pipe, senden Sie den Protokolleintrag an eine Anwendung / ein Skript und behandeln Sie die Duplizierung in dieser Anwendung / diesem Skript
quelle
Ist es unbedingt erforderlich, alle Zugriffsprotokolle zu überwachen? Wenn die Fehler tatsächlich durch eine Anforderung für einen vhost verursacht werden, sollte im vhost-Fehlerprotokoll etwas protokolliert sein. In diesem Fall ist es ein guter erster Schritt, mit ls -t /var/www/*/log/error.log zu ermitteln, welcher vhost der Schuldige ist, und dann nur diese Zugriffsprotokolldatei zu überwachen, um unnötiges Lesen von Protokollen zu vermeiden .
quelle