Ich habe einen Apache-Server mit einer Zugriffsprotokolldatei, die 600 MB belegt. Dies macht es sehr schwierig, die Datei zu durchsuchen oder zu analysieren.
Welche Software oder Module für Apache sind verfügbar, die eine tägliche Kopie meiner Zugriffsdatei erstellen, um sie leichter zu verwalten?Die beste Möglichkeit, Apache-Protokolldateien zu rotieren
Antwort
Haben Sie sich logrotate angesehen - dies ist wahrscheinlich die einfachste, am weitesten verbreitete und gut verstandene Methode, um dies zu erreichen. Es ist in hohem Maße konfigurierbar und wird wahrscheinlich 90% von dem, was Sie brauchen, tun.
Logrotate ist wahrscheinlich die beste Lösung. Verwenden Sie die Datei '/etc/logrotate.conf', um die Einstellungen für alle Ihre Protokolle zu ändern. Sie ändern "wöchentlich" zu "täglich", so dass die Protokolle jeden Tag rotiert werden. Vielleicht möchten Sie auch 'compress' hinzufügen, damit die Archive komprimiert werden. Wenn Sie sich nicht um die alten Protokolle kümmern, können Sie rotate 4 auf etwas niedriger stellen.
Ich bin fasziniert - was sind die Unterschiede zwischen diesen und den von Apache gelieferten "Rotatelogs"? Und warum erwähnt das Apache-Handbuch nicht logrotate (obwohl es sich auf cronolog bezieht)? –
Nur eine Annahme: Dies könnte daran liegen, dass Logrotate nicht auf allen Systemen verfügbar ist, auf denen Apache läuft. Ich habe es nur für Linux-Installationen verwendet, wo es verwendet wird, um alle Systemprotokolle und natürlich die Log-Dateien von Apache zu übertragen. – Kariem
Ich bin ein großer Fan von Cronolog. Installieren und leiten Sie Ihre Protokolle einfach durch. Für die tägliche Log-Rotation, so etwas wie dies funktionieren würde:
ErrorLog "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/error.log"
CustomLog "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/access.log" combined
ziemlich praktisch, und einmal installiert, einfacher (nach meiner Erfahrung) als logrotate.
Als ich Cronolog benutzte, stieß ich auf einige Probleme, als die Protokolldatei 2 GB Daten erreichte. Zu diesem Zeitpunkt wurde keine Protokollierung und Apache angehalten, bis ich die Datei entfernte/umbenannte. Seitdem benutze ich logrotate und alles ist in Ordnung :) – maxgalbu
Der eigentliche Befehl für Windows, was ziemlich schwierig ist, online zu finden ist:
CustomLog '|" "*Apache-Path/bin/rotatelogs.exe"
"**Apache-Path*/logs/backup/internet_access_%d-%m-%y.log" 86400' combined
Wo die „internet_access“ Bit der Name, den Sie für Ihre Dateien wählen ist, die 86400 die Anzahl der Sekunden in einem ist Tag. Sie müssen den Apache-Pfad in das entsprechende Verzeichnis ändern, in dem Sie Apache installiert haben.
Anstatt zu versuchen, Zitate um die Pfade zu wickeln, endete ich sie verkürzen, wie "c:/Progra ~ 1/..." Auch, es dauerte eine Weile, aber ich erkannte schließlich, dass ich vorwärts Schrägstriche in den Pfaden brauchte. – Pedro
Verwenden Sie keine umgekehrten Schrägstriche im Pfad, es wird nicht funktionieren! Alternativ können Sie [mod_log_rotate] (http://www.sitebuddy.com/mod_log_rotate) verwenden. Die Verwendung dieser Mod verhindert auch Probleme mit cmd.exe unter Windows. – s106mo
Ich hatte einige Probleme in Apache2.4 (Windows 8) für die Implementierung der Log-Rotation. Aber behoben wie unten. In httpd.conf die folgende Zeile ServerRoot "c:/Apache24". "| Bin/rotatelogs logs/access.log% Y-% m-% d 86400" # Apache-Installationspfad #CustomLog gemeinsamen # Das obige funktioniert nicht, aber wenn es .exe hinzugefügt wurde, hat es funktioniert. CustomLog "| bin/rotatelogs.exe logs/access.log.% Y-% m-% d 86400" allgemein – user292049
rotelog.exe oder cronolog.exe auf Windows OS. Sie werden in Pipe-Befehl in http.conf verwendet Mod_log_rotate zusätzliches Modul für Apache NUR für Zugriffsprotokollrotation Logrotate NUR für Unix os.
Ich habe ein Modul, das dies für Sie erledigt, ohne die Notwendigkeit für externe Leitungen etc:
http://www.poptart.org/bin/view/Poptart/ModAutorotate
Ich habe versucht, es an die Apache-Module Sammlung hinzuzufügen, aber das scheint gebrochen wurden eine Weile jetzt.
CustomLog "| bin/rotatelogs/var/log/Logfile 5M" common
Diese Konfiguration wird das Logfile drehen, wenn es mit einer Größe von 5 Megabyte erreicht.
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
Dies wäre die beste Möglichkeit, Apache-Protokolle umzuleiten. Keine Notwendigkeit, Mod mit httpd zu kompilieren.
Gibt es eine Option routelogs, um alte Dateien zu löschen oder zu überschreiben? – Tobia
Lucky you - der, dem ich gegenübersteht, ist 2.4 GIGABYTES :( –
Sie können angeben, ob Sie wirklich nach einem Apache-Modul oder etwas, das abhängig von der verwendeten OS, wie Logrotate oder Cron (bereits erwähnt in der Antworten) Das könnte helfen, auf diese - meiner Meinung nach - einfache Frage zu antworten – Kariem
14GB hier! Etwas mehr als ein Jahr Einträge – Liam