Vermeiden Sie die Protokollierung bestimmter fehlender Dateien im Apache2-Fehlerprotokoll

7

Ich möchte vermeiden, dass einige fehlende Dateien (die einen 404 ergeben) im Apache2-Fehlerprotokoll protokolliert werden.

Ich möchte dies auf einer Eclipse-Update-Site für mein Plugin tun. Das Problem ist, dass der Eclipse P2-Code versucht, auf seine Metadatendateien wie content.xml, content.jar, Digest.zip und einige andere zuzugreifen, die auf meiner Site nicht verfügbar sind. Wenn P2 dies herausfindet, greift es schließlich nach site.xml, die ich zur Verfügung stelle. Alles in allem funktioniert alles gut ... aber ich habe Tonnen von Zeilen wie:

[Mon Jul 06 21:46:46 2009] [error] [client 195.91.79.90] File does not exist: ...htdocs/stable/content.jar

in meiner error.log-Datei, was mir nicht sehr hilft.

Eine Lösung, die mir in den Sinn kommt, besteht darin, Apache über grep (über Pipe-Logging) protokollieren zu lassen, aber ich suche nach einer besseren Lösung.

Ich habe darüber nachgedacht, diese Anforderungen mit der SetEnvIf-Direktive zu kennzeichnen und das Fehlerprotokoll für getaggte Anforderungen zu überspringen, aber die ErrorLog-Direktive unterstützt dies nicht.

Irgendwelche anderen Ideen?

Peter Štibraný
quelle

Antworten:

8

Ich habe eine Lösung gefunden, die für mich funktioniert. Ich habe diese Zeilen zu .htaccess hinzugefügt:

# Don't log missing files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(artifacts\.jar|content\.xml|content\.jar)$ - [R=404,L]

Es verwendet mod_rewrite. R = 404 sagt, dass der Statuscode 404 Not Found gesendet werden soll, wenn der Client auf eine der genannten Dateien zugreift.

RewriteCode soll sicherstellen, dass die Datei tatsächlich nicht existiert. Wenn ich jemals eine dieser Dateien in das Verzeichnis eingefügt habe, wird sie wie gewohnt bereitgestellt.

Dies funktioniert hervorragend: Die genannten Dateien werden nicht mehr in error.log (das war mein Ziel) angemeldet, sondern im Zugriffsprotokoll (mit dem Status 404).

Peter Štibraný
quelle
Cool. Entschuldigung, ich habe die Tatsache verpasst, dass Sie nach der Fehlerprotokollierung keinen Zugriff hatten.
LukeR
3

Sie können die bedingte Protokollierung mit mod_log_config durchführen

Auf diese Weise können Sie Umgebungsvariablen verwenden.

Beispiel hier für das Nichtprotokollieren von Bildanforderungen.

LukeR
quelle
Danke für die Antwort. Es macht mir nichts aus, diese Dateien in access.log zu haben. Ich möchte Protokolleinträge für fehlende Dateien in ErrorLog entfernen. Leider unterstützt ErrorLog die bedingte Protokollierung mit Umgebungsvariablen nicht :-(
Peter Štibraný
1

Wäre es nicht einfacher gewesen, Ihren LogLevel höher zu erhöhen als Fehler, um zu warnen oder zu kritisieren? Oder haben Sie einen Grund, es niedriger zu halten?

thepocketwade
quelle
Ich bin immer noch an fehlenden Dateien interessiert ... außer dass die wenigen Dateien, die ich kenne, fehlen und jeden Tag viele Treffer erhalten.
Peter Štibraný