GNU/Linux >> Znalost Linux >  >> Linux

Jak otočit soubory protokolu Apache v Linuxu

Otázka: Chtěl bych automaticky otočit Apache access_log a error_log soubory. Můžete vysvětlit na příkladu, jak to udělat?

Odpověď: Toho lze dosáhnout pomocí nástroje logrotate, jak je vysvětleno níže.

Přidejte následující soubor do adresáře /etc/logrotate.d.

# 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
}

Poznámka: Podívejte se na náš výukový program logrotate (s 15 příklady), který vysvětluje další podrobnosti o tom, jak používat možnosti logrotate.

Ve výše uvedeném příkladu /etc/logrotate.d/apache:

  • velikost 100 M – Jakmile access_log a error_log dosáhnou 100M, budou otočeny. Můžete také použít 100k (pro Kb), 100G (pro GB). Místo velikosti můžete také otáčet protokoly Apache pomocí frekvence (denně, týdně, měsíčně).
  • komprimovat – Označuje, že rotovaný soubor protokolu bude komprimován. Ve výchozím nastavení to používá gzip. Otočený soubor tedy bude mít příponu .gz.
  • dateext – Připojí datum ve formátu RRRRMMDD k otočeným souborům protokolu. tj. namísto access_log.1.gz vytvoří access_log-20110616.gz
  • maxage – Označuje, jak dlouho by se měly uchovávat otočené soubory protokolu. V tomto příkladu bude uchován po dobu 30 dnů.
  • postrotate a endscript – Veškeré příkazy uzavřené mezi těmito dvěma parametry budou provedeny po otočení protokolu.

Důležité: Jakmile otočíte soubory protokolu, chcete, aby apache zapisoval nové zprávy protokolu do nově vytvořených access_log a error_log. Takže musíte poslat signál HUP do Apache, jak je znázorněno zde. Ujistěte se, že jste provedli /usr/bin/killall -HUP httpd, který restartuje apache po otočení souborů protokolu (Přečtěte si více o kill).

Také si můžete chtít poslat e-mail s oznámením, že soubor protokolu je otočen, spolu s výstupem příkazu ls -ltr jako tělem e-mailu. tj. Přidejte následující mezi možnost „postrotate“ a „endscript“ (za příkaz killall).

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

Každý den se spouští skript /etc/cron.daily/logrotate, který provede rotaci protokolů všech souborů, jak je uvedeno v /etc/logrotate.conf a všech souborů v adresáři /etc/logrotate.d.

Po přidání výše uvedeného souboru /etc/logrotate.d/apache můžete pro účely testování ručně zavolat skript logrotate, jak je uvedeno níže.

# /etc/cron.daily/logrotate

Jakmile se soubory protokolu otočí, ověřte je pomocí příkazu ls. Jak jsme vysvětlili výše, rotované soubory protokolu budou uchovávány po dobu 30 dnů.

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

Linux
  1. Jak zapisovat soubory protokolu do RAM pomocí Log2ram v Linuxu

  2. Jak použít rsyslog k vytvoření serveru pro agregaci protokolů Linux

  3. Soubory protokolu Linux

  1. Jak přejmenovat soubory v Linuxu

  2. Jak gzipovat všechny nebo konkrétní soubory v Linuxu

  3. Jak odstranit více souborů najednou v Bash na Linuxu?

  1. Jak spravovat soubory protokolu pomocí Logrotate v Linuxu

  2. Jak komprimovat více souborů v systému Linux

  3. Jak vyprázdnit soubor protokolu v Linuxu