2010-10-04 2 views
12

Ich habe unter Einstellungen in meinem Sellerie-Konfigurationsdatei:Wie kann die Rotation von Protokolldateien für Sellerie mit Djellerie aktiviert werden?

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

Ich schaute auf die Einstellungsdatei der Sellerie und es gibt keine Option, die Größe der Protokolldateigröße in der Konfiguration anzugeben. Selbst der Code sieht aus wie der StreamHandler anstelle der RotationHandler-Klasse. Irgendwelche Hinweise/Hinweise?

Danke.

Antwort

21

Für Log-Rotation auf Ubuntu, wenn Sie Ihren Sellerie log in/var/log/Sellerie/ celeryd.log haben, können Sie eine Konfiguration wie die oben verwenden wöchentliche Logfolge mit /etc/logrotate.d zu tun /.

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

Ich versuchte dies aber ich für mich nicht gerade arbeiten. Es erstellt zwar täglich Dateien (in meinem Fall), aber nachdem das Protokoll rotiert ist, bleibt es, auch wenn die Protokolldatei noch existiert, leer, bis ich Sellerie und Sellerie wieder ansetze. Gibt es ein Signal, dass ich den Prozess senden kann, um die Datei "geändert" wissen zu lassen? –

+0

Sie müssen Sellerie 2.2.5 oder höher verwenden, da sollte die Log-Rotation problemlos funktionieren. http://docs.celeryproject.org/en/latest/changelog.html#v225-news –

+0

Aus meiner requirements.txt: Sellerie == 2.5.3 django-Sellerie == 2.5.5 Mein Start Befehl: Python manage.py celeryd_detach --pidfile = {} project_location /celeryd.pid --autoscale = 10.10 --autoreload --loglevel = INFO --logfile = {} log_location /celeryd.log --pythonpath =/usr/share/pyshared Nachdem das Protokoll es bleibt leer gedreht wird, bis ich den vorherigen Job und startet ihn töten. –

1

Verwenden Sie eine . Es bemerkt, dass eine Datei abgeschnitten oder anderweitig geändert wurde und öffnet die Datei erneut. Beachten Sie, dass Sie CELERY_HIJACK_ROOT_LOGGER = False setzen und dann diesen Logger selbst einrichten und logging.getLogger ('custom_logger') in den Aufgaben selbst ausführen müssen. Siehe this post darüber, wie die eingebaute Protokollierungskonfiguration von Salery nicht flexibel ist und eine feinkörnige Kontrolle ermöglicht.

Verwandte Themen