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