2013-10-12 9 views
6

Ich arbeite mit Flask und Foreman für das Hosting von Heroku. Ich starte meinen lokalen Server foreman start eingeben. Mein Problem ist, dass ich die Protokollfehlermeldungen sehen möchte, die mein Code produziert, aber ich habe den richtigen Weg nicht gefunden.Wie Fehlermeldungen mit Flask und Vorarbeiter (Heroku) protokollieren?

Ich habe versucht, mit einigem Code, den ich in der Flasche Dokumentation wie diese gefunden, aber es funktioniert auch nicht:

import logging 
from FileHandler import FileHandler 
file_handler = FileHandler("log.txt") 
file_handler.setLevel(logging.WARNING) 
app.logger.addHandler(file_handler) 

Jede Idee, wie die Lage sein, de Fehlermeldungen zu lesen, wenn Flask mit foreman start läuft ?

Antwort

1

Heroku und Foreman erwarten, dass Ihre Protokolle auf stdout oder stderr gehen, nicht in eine Datei. Siehe . Für eine Python-Anwendung können Sie die Klasse logging.StreamHandler verwenden, die standardmäßig auf stderr protokolliert wird.

8

Ich hatte ein ähnliches Problem - am Ende war das Problem nicht mit Foreman, aber mit einer neueren Version von Gunicorn, wo Konsolenprotokollierung standardmäßig deaktiviert war (http://gunicorn-docs.readthedocs.org/en/latest/faq.html#why-i-don-t-see-any-logs-in-the-console).

Ändern meiner procfile aus:

web: gunicorn app:app 

zu

web: gunicorn --log-file=- app:app 

löste das Problem für mich.

+0

MEIN GOTT (oder GORD, soll ich sagen?) - Ich habe für diese Antwort zwei Tage gesucht. Vielen Dank. – Zack