Mam serwer Tomcat, który tworzy dzienniki dostępu za pośrednictwem zaworu ( org.apache.catalina.valves.FastCommonAccessLogValve ). Ten zawór zajmuje się obracaniem pliku dziennika dostępu, ale nie kompresowaniem go ani usuwaniem po pewnym czasie.
W tej chwili mam zadanie cron, które służy find [...] -mtime +30 [...]
do kompresji i usuwania dzienników. Wolę używać logrotate, aby rotacja logów była w scentralizowanym miejscu dla wszystkich logów. Nie lubię mieć osobnego rozwiązania dla Tomcat.
Próbowałem przeczytać dokumentację Logrotate, ale wciąż jestem trochę zagubiony. Czy mogę używać programu Logrotate tylko do kompresji i czyszczenia plików dziennika? Jak mam to zrobić?
Lub odwracając problem, czy istnieje zawór dziennika dostępu Tomcat, który kompresuje i czyści pliki dziennika?
Dziękuję za Twoją pomoc !
Odpowiedzi:
Dość prosty, który widziałem, działa w ten sposób.
Utwórz plik w /etc/logrotate.d o nazwie tomcat zawierający następujące elementy: -
Działa to codziennie , kompresuje plik i zachowuje wartość 7 dni ( obrót o 7 ). copytruncate oznacza, że skopiuje, a następnie obetnie oryginalny plik, dzięki czemu nie będzie potrzeby ponownego uruchamiania tomcat. brak ok nie spowoduje błędu, jeśli go nie ma.
Zawór access.log można zmienić na nieobrotowy, dodając rotatable = false: -
źródło
Zmodyfikowany skrypt TimP - Dodano usuwanie bardzo starych plików, dodano skanowanie w poszukiwaniu starych skompresowanych plików.
źródło
Nie chciałem zmieniać konfiguracji Tomcat, więc stworzyłem skrypt, który kompresował obrócone pliki
źródło
To zaskakująco proste. Po prostu powiedz logrotate, które pliki chcesz obrócić.
nocreate
mówi logrotate, aby nie odtwarzał pustego pliku po przeniesieniu starego (jeśli obracasz pliki do podfolderu).źródło
Dla kompresji local_access_log.YYYY-MM-DD.txt napisałem ten skrypt po obejrzeniu tego postu: -
źródło
Podane tutaj proste rozwiązanie. Obejmuje to również opcję przesyłania s3.
https://yottabrain.org/tomcat/tomcat-log-backup/
źródło