Kann nicht sehen, mein Sellerie-Protokolle beim ausführen schlagen
Ich mich ab, Sellerie via supervisord, siehe den Eintrag unten.
[program:celery]
user = foobar
autostart = true
autorestart = true
directory = /opt/src/slicephone/cloud
command = /opt/virtenvs/django_slice/bin/celery beat --app=cloud -l DEBUG -s /home/foobar/run/celerybeat-schedule --pidfile=/home/foobar/run/celerybeat.pid
priority = 100
stdout_logfile_backups = 0
stderr_logfile_backups = 0
stdout_logfile_maxbytes = 10MB
stderr_logfile_maxbytes = 10MB
stdout_logfile = /opt/logs/celery.stdout.log
stderr_logfile = /opt/logs/celery.stderr.log
pip freeze | grep Sellerie
celery==3.1.0
Aber jede Nutzung:
@celery.task
def test_rabbit_running():
import logging
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
logger.setLevel(logging.DEBUG)
logger.info("foobar")
nicht zeigen, bis in den logs. Stattdessen bekomme ich Einträge wie die folgenden.
Sellerie.stdout.melden Sie
celery beat v3.1.0 (Cipater) is starting.
__ - ... __ - _
Configuration ->
. broker -> redis://localhost:6379//
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> /home/foobar/run/celerybeat-schedule
. logfile -> [stderr]@%DEBUG
. maxinterval -> now (0s)
Sellerie.stderr.melden Sie
[2013-11-12 05:42:39,539: DEBUG/MainProcess] beat: Waking up in 2.00 seconds.
INFO Scheduler: Sending due task test_rabbit_running (retail.tasks.test_rabbit_running)
[2013-11-12 05:42:41,547: INFO/MainProcess] Scheduler: Sending due task test_rabbit_running (retail.tasks.test_rabbit_running)
DEBUG retail.tasks.test_rabbit_running sent. id->34268340-6ffd-44d0-8e61-475a83ab3481
[2013-11-12 05:42:41,550: DEBUG/MainProcess] retail.tasks.test_rabbit_running sent. id->34268340-6ffd-44d0-8e61-475a83ab3481
DEBUG beat: Waking up in 6.00 seconds.
Was muss ich tun, um meine Protokollierung Anrufe erscheinen in den log-Dateien?
- was ist der Inhalt der beiden
stdout_logfile
undstderr_logfile
? - Ich habe Beispiele Hinzugefügt Ausgänge für beide Dateien.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es nicht alles loggen, was, weil es nicht ausführen, alle Aufgaben (und es ist ok).
Siehe auch Celerybeat nicht der Ausführung einer periodischen Aufgaben
Ich würde versuchen, den Anruf zu melden innerhalb einer Aufgabe, wie der name des util-Funktion bedeutet, get_task_logger, oder starten Sie einfach mit einem einfachen drucken, oder haben Sie Ihre eigenen Protokoll-set-up, wie vorgeschlagen, in Django Sellerie Logging Best Practice (beste Weg zu gehen, IMO)