Odpowiednik logrotate w OSX

52

Czy Logrotate ukrywa się gdzieś na OSX, czy też istnieje odpowiednik? Nie ma go /usr/sbin.

Steve Bennett
źródło
Zauważam, że jest newsyslog, ale to nie do końca takie samo i wymaga rootowania.
Steve Bennett
Zastanawiam się, czy można przenieść program Logrotate.
Tom O'Connor
sprawdź / etc / periodic, uważam, że rotacja logów jest domyślnie implementowana jako zestaw skryptów powłoki. Zobacz także newsyslog (/etc/newsyslog.d i stronę podręcznika man), aby dowiedzieć się, jak to zrobić w zależności od rozmiaru pliku.
malcolmpdx
dzięki za wskazówki - rzeczywiście są skrypty w / etc / periodic
Steve Bennett
@ SteveBennett Jak inaczej ludzie zdobędą swoje odznaki „Krytyczne”? Niektórzy ludzie są tu tylko po odznaki i reputację, nie wiedzieliście.
Mark Fisher

Odpowiedzi:

23

W oparciu o odpowiedź Briana Armstronga, oto coś z nieco większym wyjaśnieniem i poprawką. Obsługuje dziennik utworzony przez postgres na OSX zainstalowanym przez Homebrew. Znajduje się na /etc/newsyslog.d/postgresql.conf:

# logfilename                           [owner:group]      mode count size(KB)  when  flags [/pid_file]                            [sig_num]
/usr/local/var/postgres/postgresql.log  :                  600  2     2048      *     J     /usr/local/var/postgres/postmaster.pid 

Spowoduje to obrócenie pliku dziennika, gdy osiągnie rozmiar 2 MB, przechowywanie 2 archiwów (łącznie 6 MB używanego miejsca) i kompresowanie archiwów przez bzip2. Powiadomi proces postgres o ponownym otwarciu plików dziennika po ich obróceniu, co jest konieczne, aby uzyskać nowe wpisy dziennika i faktycznie zwolnić miejsce na dysku bez ponownego uruchamiania komputera.

Należy pamiętać, że rozmiar jest w KB, a nie w bajtach.

Możesz przetestować plik konfiguracyjny (bez wpływu na pliki) za pomocą sudo newsyslog -nvv.

dokumentacja newsyslog znajduje się tutaj: http://www.freebsd.org/cgi/man.cgi?newsyslog.conf(5) . Użyto również: http://www.redelijkheid.com/blog/2011/3/28/adding-custom-logfile-to-os-x-server-log-rotation.html

Robin Daugherty
źródło
21

OS X ma kilka sposobów obracania / wygaśnięcia / etc swoich dzienników, w zależności od typu danego dziennika:

  1. W przypadku zwykłych plików dziennika (tj. Plików tekstowych, które są stale dołączane do), newsyslog może je obracać w zależności od rozmiaru lub czasu, chociaż wydaje się, że nie ma tylu opcji, jak logrotate. Jest konfigurowany przez /etc/newsyslog.confi /etc/newsyslog.d/*(ogólnie, należy dodać pliki, /etc/newsyslog.d/aby dodać dzienniki do listy zarządzania).
  2. System syslog OS X migruje z tego formatu zwykłego tekstu do formatu bazy danych, głównie w /var/log/asl/. Nie do końca rozumiem ten system, ale ta baza danych jest prawdopodobnie usuwana przez aslmanagera , który jest konfigurowany przez /etc/asl.conf.
  3. W przypadku katalogów, w których indywidualne „wpisy” dziennika są dodawane jako osobne pliki (głównie /Library/Logs/CrashReporter/), pliki są usuwane przez /etc/periodic/daily/100.clean-logs. Zasady (które katalogi mają być skanowane i czas pozostawienia plików) są skonfigurowane /etc/defaults/periodic.conf, ale jeśli chcesz je zastąpić / zmienić, powinieneś utworzyć /etc/periodic.conf.locali umieścić tam swoje dostosowania.

Jeśli to, co chcesz obrócić, nie pasuje do żadnego z tych modeli, możesz dodać własne skrypty do /etc/periodic/daily/(które będą uruchamiane codziennie o 3:15 rano), /etc/periodic/weekly/(w każdy sobotni poranek o 3:15 rano) lub /etc/periodic/monthly/(pierwszy z co miesiąc o 5:30).

Gordon Davisson
źródło
11

newsyslogdziała automatycznie w systemie OSX, używam takiego pliku konfiguracyjnego, /etc/newsyslog.d/rails_apps.confaby pliki dziennika deweloperów były przycięte do 5 MB

# logfilename                           [owner:group]   mode count size     when  flags [/pid_file] [sig_num]
/Users/barmstrong/code/**/log/*.log                     666  0     5242880  *     G
Brian Armstrong
źródło
rozmiar jest w K, a dla właściciela: grupy wymagane jest „:”, nawet jeśli są puste
Bryan Ash
9

Możesz uzyskać logrotate przez Homebrew. Oto moje notatki z konfigurowania tego.

zainstalować

brew install logrotate

Skonfiguruj rotację dziennika

Pliki konfiguracji rotacji dziennika są w /usr/local/etc/logrotate.d/

Edytuj plik konfiguracyjny. Np. Chciałem obrócić niektóre pliki „/var/log/tend_*.log”, które wprowadziłem:

sudo vi /usr/local/etc/logrotate.d/tend.conf

Zawartość: /var/log/tend_*.log { daily copytruncate rotate 3 size 10M compress }

Przetestuj to

sudo logrotate -v -f /usr/local/etc/logrotate.d

Uruchomić usługę

sudo brew services start logrotate

Uruchom ponownie usługę

sudo brew services restart logrotate

Broofa
źródło