Wohin geht die Logging-Datei?
Wie ich sehen kann, haben Sie keine FileHandlers
. Es bedeutet, Logger schreiben Nachrichten an die Konsole.
Lassen Sie es uns überprüfen. Hier Beispiel tasks.py:
# celery 4.0.2
@celery.task(name='add')
def add(x, y):
logger.info('Adding {0} + {1}'.format(x, y))
return x + y
app = celery.Celery(
__name__,
broker='redis://localhost:6379/0',
backend='redis://localhost:6379/0',
)
app.conf.beat_schedule = {
# run task each 2 seconds
'add-every-2-seconds': {
'task': 'add',
'schedule': 2.0,
'args': (1, 2)
},
}
Run Sellerie (celery worker -A tasks.app --loglevel=info --beat
) und Konsole überprüfen. Sie werden so etwas sehen:
[2017-04-08 18:18:55,924: INFO/Beat] Scheduler: Sending due task add-every-2-seconds (add)
[2017-04-08 18:18:55,930: INFO/MainProcess] Received task: add[44a6877c-84a2-4a26-815e-1f637fdf9c0c]
[2017-04-08 18:18:55,932: INFO/PoolWorker-2] add[44a6877c-84a2-4a26-815e-1f637fdf9c0c]: Adding 1 + 2
[2017-04-08 18:18:55,934: INFO/PoolWorker-2] Task add[44a6877c-84a2-4a26-815e-1f637fdf9c0c] succeeded in 0.00191404699945s: 3
[2017-04-08 18:18:57,924: INFO/Beat] Scheduler: Sending due task add-every-2-seconds (add)
[2017-04-08 18:18:57,928: INFO/MainProcess] Received task: add[c386d360-57d3-4352-8a89-f86bb2376e4e]
[2017-04-08 18:18:57,930: INFO/PoolWorker-3] add[c386d360-57d3-4352-8a89-f86bb2376e4e]: Adding 1 + 2
[2017-04-08 18:18:57,931: INFO/PoolWorker-3] Task add[c386d360-57d3-4352-8a89-f86bb2376e4e] succeeded in 0.00146738500007s: 3
Es bedeutet Logger funktioniert gut und schreiben Sie unsere Nachrichten. Nun wollen wir versuchen FileHandler
für unsere Aufgaben hinzuzufügen:
logger = get_task_logger(__name__)
task_handler = FileHandler('task.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
task_handler.setFormatter(formatter)
logger.addHandler(task_handler)
Run Sellerie und Ordner überprüfen, wo tasks.py
gespeichert. Sie sollten eine neue Datei sehen (tasks.log
). Beispiel für den Inhalt:
2017-04-08 18:35:02,052 - tasks - INFO - Adding 1 + 2
...
Speichert die Logdatei, die von den Arbeitern zurückgegebenen Ergebnisse?
Standardmäßig werden nur Informationen zur Konsole gedruckt. Sie können jedoch spezifische Protokollierer und Handler registrieren und das Verhalten anpassen, indem Sie signals, eine benutzerdefinierte Task/Loader-Klasse, verwenden.
Sie können auch -f LOGFILE, --logfile=LOGFILE
Argument beim Lauf Celery
.
Hoffe, das hilft.