2013-01-03 28 views
8

Sono in esecuzione fp5 FPM con APC come opcode e cache dell'applicazione. Come al solito, sto registrando gli errori di php in un file.Come configurare logrotate con i registri php

Poiché sta diventando piuttosto grande, ho provato a configurare logrotate. Funziona, ma dopo la rotazione, php continua a accedere al file di registro esistente, anche quando viene rinominato. Ciò comporta che scripts.log è un file 0B e scripts.log.1 continua a crescere ulteriormente.

Penso (non ho provato) che eseguire il ricaricamento di php5-fpm in postrotate potrebbe risolvere questo problema, ma questo cancellerebbe la mia cache APC ogni volta.

Qualcuno sa come farlo funzionare correttamente?

+0

Quando si ruotano i registri, penso che sia necessario riavviare anche l'FPM. O devi dire a logrotate di creare effettivamente un nuovo inode e troncare il file esistente. In caso contrario, l'FPM continuerà a scrivere sull'inode dei file di log in modo che la ridenominazione del file non sia di aiuto (che è ciò che descrivi come comportamento nella tua domanda). – hakre

+0

copytruncate è solo il tuo salvavita .. – Satish

risposta

5

Ho trovato che l'opzione "copytruncate" su logrotate garantisce che l'inode non cambi. Fondamentalmente quello che [sic!] Stava cercando.

Questo è probabilmente quello che stai cercando. Tratto da: How does logrotate work? - Linuxquestions.org.

Come scritto nel mio commento, è necessario impedire a PHP di scrivere nello stesso file (rinominato). La copia di un file crea normalmente uno nuovo, e il troncamento è così parte del nome che le opzioni, quindi vorrei assumere, l'opzione copytruncate è una soluzione facile (from the manpage):

Vedi anche:

+1

Perfetto! Funziona come un fascino –

5

Un altro modo L'esperienza che ho trovato su un mio server è dire a php di riaprire i log. Penso che nginx abbia anche questa caratteristica, il che mi fa pensare che debba essere un posto abbastanza comune. Ecco la mia configurazione:

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