2010-10-04 12 views
12

devo sotto impostazioni nel mio sedano file di configurazione:Come abilitare la rotazione dei file di registro per celeryd con djcelery?

  1. CELERYD_LOG_DEBUG = 'FALSE'
  2. CELERYD_LOG_FILE = r '/ var/log/sedano/celeryd.log'
  3. CELERYD_LOG_LEVEL = "ERROR"

Ho esaminato il file delle impostazioni del sedano e non vi è alcuna opzione per specificare il limite di dimensioni del file di registro nella configurazione. Anche il codice sembra utilizzare lo StreamHandler invece della classe RotationHandler. Eventuali indizi/suggerimenti?

Grazie.

risposta

21

Per la rotazione dei log su Ubuntu, se avete il vostro log sedano in/var/log/sedano/ celeryd.log è possibile utilizzare una configurazione simile a quella di cui sopra per fare settimanale rotazione dei log con /etc/logrotate.d /.

/var/log/celery/*.log { 
    weekly 
    missingok 
    rotate 52 
    compress 
    delaycompress 
    notifempty 
    copytruncate 
} 
+0

Ho provato questo, ma non ho esattamente funzionato per me. Crea file giornalieri (nel mio caso) ma dopo che il registro è stato ruotato, anche se il file di registro esiste ancora, rimane vuoto fino al riavvio di celeryd e celerybeat. C'è un segnale che posso inviare al processo per far sapere al file "cambiato"? –

+0

È necessario utilizzare celery 2.2.5 o versione successiva, lì il log-rotate dovrebbe funzionare senza problemi. http://docs.celeryproject.org/en/latest/changelog.html#v225-news –

+0

Dal mio requirements.txt: sedano == 2.5.3 django-sedano == 2.5.5 mio avvio comando: python manage.py celeryd_detach --pidfile = {posizione_project} /celeryd.pid --autoscale = 10,10 --autoreload --loglevel = INFO --logfile = {posizione_log} /celeryd.log --pythonpath =/usr/share/pyshared Dopo che il registro viene ruotato, rimane vuoto fino a quando non uccido il lavoro precedente e lo riavvia. –

1

Provare a utilizzare un [WatchedFileHandler][1]. Si accorge che un file è stato troncato o modificato in altro modo e riapre il file. Nota è necessario impostare CELERY_HIJACK_ROOT_LOGGER = False e quindi configurare questo logger da solo e fare logging.getLogger ('custom_logger') all'interno delle attività da solo. Vedere this post su come la configurazione di registrazione incorporata di Celery non è flessibile e per il controllo a grana fine.

Problemi correlati