Logrotate usuwa pliki zgodnie z kolejnością na posortowanej leksykalnie liście nazw plików dziennika, które uległy rotacji, a także według wieku pliku (przy użyciu czasu ostatniej modyfikacji pliku)
-
obróć to maksymalna liczba obróconych plików, jaką możesz znaleźć. W przypadku większej liczby rotowanych plików dziennika ich nazwy są sortowane leksykalnie, a najmniejsze leksykalnie są usuwane.
-
maksymalny definiuje inne kryteria usuwania rotowanych plików dziennika. Każdy zmieniony plik dziennika, który jest starszy niż podana liczba dni, jest usuwany. Zauważ, że data jest wykrywana z czasu ostatniej modyfikacji pliku, a nie z nazwy pliku.
-
format daty umożliwia specyficzne formatowanie daty w obróconych plikach. Strona podręcznika zauważa, że format powinien skutkować poprawnym leksykalnie sortowaniem .
-
datawczoraj pozwala na używanie dat w nazwach plików dziennika jeden dzień wstecz.
Aby zachować podaną liczbę dni w codziennych rotowanych plikach (np. 7), musisz ustawić rotate na wartość 7 i możesz zignorować maxage , jeśli Twoje pliki są tworzone i obracane naprawdę codziennie.
Jeśli tworzenie dziennika nie nastąpi przez kilka dni, np. przez 14 dni liczba rotowanych plików dziennika będzie nadal taka sama (7).
maxage poprawi sytuację w scenariuszach „nie utworzono dzienników”, usuwając zawsze zbyt stare pliki. Po 7 dniach braku produkcji logów nie będzie żadnych rotowanych plików logów.
Nie możesz użyć dateformat jak pokazuje OP, ponieważ nie można go leksykalnie sortować. Zamieszanie z dateformat prawdopodobnie spowodowałoby usunięcie innych rotowanych plików dziennika, niż naprawdę chciałeś.
Wskazówka :Uruchom logrotate z wiersza poleceń za pomocą -d opcja wykonania biegu próbnego:zobaczysz, co zrobiłby logrotate, ale w rzeczywistości nic nie robi. Następnie wykonaj ręczne uruchomienie za pomocą -v (pełne), aby można było potwierdzić, że to, co zostało zrobione, jest tym, czego chcesz.
Rozwiązanie:czyste logi utworzone przez cron
Koncepcja to:
Pozwól cronowi tworzyć i aktualizować pliki dziennika, ale dokonaj niewielkich modyfikacji, aby utworzyć pliki, postępując zgodnie ze standardowymi nazwami plików logrotate przy użyciu domyślnego dateext
/data/tier2/scripts/logs/recover_standby_SID.log-`date +\%Y\%m\%d`.log
Używaj logrotate tylko do usuwania zbyt starych plików dziennika
- celuj w nieistniejący plik dziennika
/data/tier2/scripts/logs/recover_standby_SID.log - użyj
missingokaby umożliwić czyszczenie logrotate - ustaw
rotatewystarczająco wysoki, aby pokryć liczbę przechowywanych plików dziennika (co najmniej 7, jeśli będzie jeden „obrócony” plik dziennika dziennie, ale możesz bezpiecznie ustawić go bardzo wysoko, np. 9999) - ustaw
maxagedo 7. Spowoduje to usunięcie plików, których czas ostatniej modyfikacji przekracza 7 dni. dateextsłuży tylko do zapewnienia, że logrotate wyszukiwania starszych plików wygląda na obrócone.
Plik konfiguracyjny Logrotate wyglądałby następująco:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 9999
maxage 7
dateext
}
Rozwiązanie:obracaj bezpośrednio przez logrotate raz dziennie
Nie jestem pewien, w jaki sposób jest tworzony plik gotowości odzyskiwania źródła, ale zakładam, że Oracle lub jakiś twój skrypt jest regularnie lub stale dołączany do pliku /data/tier2/scripts/logs/recover_standby_SID.log
Koncepcja to:
- obróć plik raz dziennie,
logrotate - bezpośrednia praca z plikiem dziennika zawierającym dane odzyskiwania
/data/tier2/scripts/logs/recover_standby_SID.log dailyspowoduje rotację raz dziennie (pod względem sposobu, w jakicronrozumiedaily)rotatemusi być ustawiona na 7 (lub dowolną wyższą liczbę).maxageustawiony na 7 (dni)dateextaby użyć domyślnego przyrostka daty logrotatedateyesterdayużywane, aby przyrostki dat w rotowanych plikach były o jeden dzień wstecz.missingokdo czyszczenia starszych plików, nawet jeśli nie ma nowej zawartości do rotacji.
Konfiguracja Logrotate wyglądałaby następująco:
data/tier2/scripts/logs/recover_standby_SID.log {
daily
missingok
rotate 7
maxage 7
dateext
dateyesterday
}
Zwróć uwagę, że być może będziesz musiał trochę pobawić się copytruncate i inne podobne opcje, które są związane z tym, w jaki sposób plik dziennika źródłowego jest tworzony przez proces zewnętrzny i jak reaguje na akt rotacji.