GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So rotieren Sie Apache-Protokolldateien unter Linux

Frage: Ich möchte das Apache access_log automatisch rotieren lassen und error_log Dateien. Können Sie anhand eines Beispiels erklären, wie das geht?

Antwort: Dies kann mit dem Dienstprogramm logrotate wie unten beschrieben erreicht werden.

Fügen Sie die folgende Datei zum Verzeichnis /etc/logrotate.d hinzu.

# vi /etc/logrotate.d/apache
/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
    size 100M
    compress
    dateext
    maxage 30
    postrotate
      /usr/bin/killall -HUP httpd
      ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected]
    endscript
}

Hinweis: Weitere Informationen zur Verwendung der Logrotate-Optionen finden Sie in unserem Logrotate-Tutorial (mit 15 Beispielen).

Im obigen Beispiel /etc/logrotate.d/apache:

  • Größe 100M – Sobald access_log und error_log 100 MB erreichen, werden sie rotiert. Sie können auch 100k (für Kb), 100G (für GB) verwenden. Anstelle der Größe können Sie Apache-Protokolle auch anhand der Häufigkeit rotieren (täglich, wöchentlich, monatlich).
  • komprimieren – Gibt an, dass die rotierte Protokolldatei komprimiert wird. Standardmäßig wird dabei gzip verwendet. Die gedrehte Datei hat also die Erweiterung .gz.
  • Datumstext – Fügt das Datum im Format JJJJMMTT an die rotierten Protokolldateien an. d.h. Anstelle von access_log.1.gz wird access_log-20110616.gz
  • erstellt
  • maxage – Gibt an, wie lange die rotierten Protokolldateien aufbewahrt werden sollen. In diesem Beispiel wird es 30 Tage lang aufbewahrt.
  • postrotate und endscript – Alle zwischen diesen beiden Parametern eingeschlossenen Befehle werden ausgeführt, nachdem das Protokoll rotiert wurde.

Wichtig: Sobald Sie die Protokolldateien rotieren, möchten Sie, dass Apache die neuen Protokollmeldungen in das neu erstellte access_log und error_log schreibt. Sie müssen also das HUP-Signal wie hier gezeigt an den Apache senden. Stellen Sie sicher, dass /usr/bin/killall -HUP httpd ausgeführt wird, wodurch der Apache nach dem Rotieren der Protokolldateien neu gestartet wird (Lesen Sie mehr über kill).

Außerdem möchten Sie möglicherweise eine E-Mail an sich selbst senden, in der angegeben wird, dass die Protokolldatei rotiert wird, zusammen mit der Ausgabe des Befehls ls -ltr als Hauptteil der E-Mail. D.h. fügen Sie Folgendes zwischen der Option „postrotate“ und „endscript“ hinzu (nach dem killall-Befehl).

ls -ltr /usr/local/apache2/logs | mail -s "$HOSTNAME: Apache restarted and log files rotated" [email protected]

Das Skript /etc/cron.daily/logrotate wird jeden Tag ausgeführt und führt eine Protokollrotation aller Dateien aus, die in /etc/logrotate.conf und allen Dateien im Verzeichnis /etc/logrotate.d angegeben sind.

Nachdem Sie die obige Datei /etc/logrotate.d/apache zu Testzwecken hinzugefügt haben, können Sie das logrotate-Skript wie unten gezeigt manuell aufrufen.

# /etc/cron.daily/logrotate

Sobald die Protokolldateien rotiert sind, führen Sie einen ls aus, um sie zu überprüfen. Wie oben erläutert, werden die rotierten Protokolldateien 30 Tage lang aufbewahrt.

# ls /usr/local/apache2/logs
access_log
error_log
access_log-20110716.gz
error_log-20110716.gz

Linux
  1. So verwalten Sie Protokolldateien mit Logrotate unter Linux

  2. So schreiben Sie Protokolldateien im RAM mit Log2ram unter Linux

  3. So verwenden Sie rsyslog zum Erstellen eines Linux-Protokollaggregationsservers

  4. So komprimieren Sie mehrere Dateien unter Linux

  5. Wie man alle oder bestimmte Dateien in Linux gzippt

So entpacken Sie Dateien unter Linux

So benennen Sie eine Datei (en) in Linux um

So fügen Sie Nachrichten manuell zu Linux-Systemprotokolldateien hinzu

So zeigen Sie Nginx-Protokolldateien unter Linux an

So zeigen Sie Apache-Protokolldateien unter Linux an

So komprimieren Sie eine Datei unter Linux