2013-01-03 11 views
8

Używam php5 FPM z APC jako opcode i pamięć podręczną aplikacji. Jak zwykle, loguję błędy php do pliku.Jak skonfigurować logrotate za pomocą php logów

Ponieważ to staje się dość duże, próbowałem skonfigurować logrotate. Działa, ale po obrocie, php kontynuuje logować się do istniejącego pliku dziennika, nawet gdy jest zmieniona. W rezultacie skrypt scripts.log jest plikiem 0B, a scripts.log.1 nadal się rozwija.

Myślę (nie próbowałem), że uruchomienie przeładowania php5-fpm w postrotate może rozwiązać ten problem, ale to wyczyściłoby moją pamięć podręczną APC za każdym razem.

Czy ktoś wie, jak to działa poprawnie?

+0

Po obróceniu logów, myślę, że musisz ponownie uruchomić FPM. Lub musisz powiedzieć logrotate, aby faktycznie utworzyć nowy i-węzeł i skrócić istniejący plik. W przeciwnym razie FPM będzie kontynuował zapisywanie do i-logów plików, więc zmiana nazwy samego pliku nie pomoże (co opisałeś jako zachowanie w swoim pytaniu). – hakre

+0

copytruncate to tylko twoje życie ratunkowe. – Satish

Odpowiedz

5

Stwierdziłem, że opcja "copytruncate" dla logrotate zapewnia, że ​​i-węzeł się nie zmienia. Zasadniczo to, czego szukał [sic!].

To jest prawdopodobnie to, czego szukasz. Zaczerpnięte z: How does logrotate work? - Linuxquestions.org.

Jak napisano w moim komentarzu, musisz uniemożliwić PHP zapisywanie w tym samym pliku (o zmienionej nazwie). Kopiowanie pliku normalnie tworzy nową, a obcinanie jest także częścią nazwy, że opcje, więc zakładam, opcja copytruncate jest łatwym rozwiązaniem (from the manpage):

Zobacz także:

+1

Perfect! Działa jak marzenie –

5

Innym tak lution, które znalazłem na moim serwerze, to nakazanie php, by ponownie otworzył logi. Myślę, że nginx również ma tę funkcję, co powoduje, że myślę, że to musi być dość powszechne miejsce. Oto moja konfiguracja:

/var/log/php5-fpm.log { 
     rotate 12 
     weekly 
     missingok 
     notifempty 
     compress 
     delaycompress 
     postrotate 
       invoke-rc.d php5-fpm reopen-logs > /dev/null 
     endscript 
} 
Powiązane problemy