Odpowiedzi:
Z mojego doświadczenia wynika, że logrotate jest świetny. Jest bardzo elastyczny i działa dobrze z większością oprogramowania.
Istnieją jednak pewne problemy, a ponieważ cronolog jest przede wszystkim narzędziem do obracania dziennika internetowego, opiszę moje doświadczenia z logrotate + apache, które były problematyczne:
Podczas obracania dzienników musimy powiadomić apache, że dziennik jest obracany, ponieważ nawet jeśli logrotate zmieni nazwę access.log na access.log.1, apache będzie kontynuował zapisywanie do access.log.1, ponieważ zapisuje do i-węzła, oraz zmiana nazwy pliku nie wpływa na numer i-węzła.
W debian etch (i prawdopodobnie wielu innych dystrybucjach) logrotate jest używany do obracania logów apache. Teraz apache ma wdzięczny restart, który doradza procesom potomnym apache, aby zakończyły działanie po zakończeniu obsługi istniejących połączeń, apache następnie ponownie czyta swoją konfigurację, spawnuje nowe procesy potomne, które zaczynają zapisywać do nowego pliku dziennika (w przypadku gdy poprzedni był obrócone).
To brzmi jak świetne rozwiązanie, jednak pełen wdzięku restart nie zawsze działa w określonych warunkach (np. Duże obciążenie), więc programiści debiana postanowili użyć restartu apache zamiast wdzięcznego restartu, w konfiguracji logrotate apache. Niestety powoduje to, że wszystkie połączenia są przerywane na raz, co jest bardzo złe w przypadku mocno obciążonych witryn. Ponadto ponowne uruchomienie apache może również powodować problemy, takie jak zatrzymywanie i nie uruchamianie apache (także w niektórych sytuacjach ładowania), zobacz linki błędów poniżej, aby uzyskać szczegółowe informacje.
Najważniejsze jest to, że logrotate jest świetny, ale może prowadzić do pewnych problemów dla niektórych programów. Nie mam dużego doświadczenia z cronologiem, ale ponieważ zapisuje dzienniki przez potok, nie wymaga przeładowywania apache podczas obracania plików dziennika, co w zasadzie rozwiązuje wszystko, co opisano powyżej.
Powiązane błędy debiana Logrotate / Apache:
Wolę cronologa, ale nie jest to tak naprawdę silna preferencja.
logrotate, gdzie jest uruchamiany przez crona, a jeśli system jest z jakiegoś powodu wyłączony, powinien nastąpić obrót, to pliki dziennika nie zostaną obrócone.
Lubię też, aby pliki dziennika miały datę (% Y% m.combined.access.log) w nazwie, ponieważ przechowuję te dzienniki przez długi czas. W większości systemów domyślnie apache logrotate nazwie pliki access.log, access.log.1 itp. Może być możliwe użycie daty w plikach dziennika z logrotate, ale nie mogłem wymyślić, jak to zrobić, kiedy ostatnio patrzyłem.
Używał tylko logrotate. Tego używa Debian domyślnie i nigdy nie miałem z tym żadnych skarg.
I prawie wyłącznie używać cronolog
ponad logrotate
.
logrotate
jest dostarczany z Debianem i pozwalam mu kontynuować pracę dla usług systemowych, takich jak dzienniki serwera pocztowego. Ale w przypadku Apache i lighttpd
plików dziennika to wszystko cronolog
.
Jednym z powodów, dla których używam cronolog
jest to, że cała konfiguracja odbywa się w wierszu pliku dziennika konfiguracji serwera WWW
np. w lighttpd
pliku konfiguracyjnym możesz umieścić:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"
I wszyscy otrzymują nowy plik dziennika co tydzień bez żadnej innej konfiguracji. Lub możesz być kreatywny i zrobić coś takiego:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"
I pobierz plik dziennika, który pokazuje ruch według dnia tygodnia. np. we wszystkie niedziele, we wtorki.
Co lepsze, nawet jeśli serwer nie działa przez dłuższy czas, poprawny plik dziennika zostanie użyty po ponownym uruchomieniu.