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
missingok
aby umożliwić czyszczenie logrotate - ustaw
rotate
wystarczają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
maxage
do 7. Spowoduje to usunięcie plików, których czas ostatniej modyfikacji przekracza 7 dni. dateext
sł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
daily
spowoduje rotację raz dziennie (pod względem sposobu, w jakicron
rozumiedaily
)rotate
musi być ustawiona na 7 (lub dowolną wyższą liczbę).maxage
ustawiony na 7 (dni)dateext
aby użyć domyślnego przyrostka daty logrotatedateyesterday
używane, aby przyrostki dat w rotowanych plikach były o jeden dzień wstecz.missingok
do 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.