2010-12-01 18 views
3

Wer weiß, wie die Ausführlichkeit der Protokollierung von dev_appserver.py Ausgabe reduzieren?Google App-Engine Python Log-Level Rauschunterdrückung

Der Lärmpegel dieser Protokolle macht mich nur verrückt. Ich weiß, wie man diese Art von Konfig in Java mit log4j macht, aber ich bin hier wirklich auf Google App Engine Python verloren.

Antwort

1

Lösung 1.

Sie die Logging-Bibliothek nur anweisen können Aussagen einloggen bei oder oben ein bestimmtes Niveau mit logging.setLevel(). Wenn Sie diesen Level-Schwellenwert höher als den Level setzen, der die Nachrichten enthält, die Sie nicht möchten, filtern Sie die unerwünschten Nachrichten von dev_appserver heraus.

Um die Log-Meldungen angezeigt werden können, müssen Sie eine der folgenden Funktionen ausführen: zumindest an der Ausfilterung

  • Stellen Sie sicher, Ihre Log-Meldungen Schwelle Sie oben protokolliert eingestellt (wahrscheinlich WARN).
  • Konfigurieren und verwenden Sie Ihre eigenen custom logger. Dann können Sie den Logging-Level für Ihren Logger unabhängig vom Root-Logger des Dev-Servers steuern.

Lösung 2.

Die Abhilfe oben ist ein wenig ärgerlich, weil Sie entweder DEBUG und INFO Ebenen zu vermeiden, oder Sie müssen Ihre eigenen Logger verwenden erstellen.

Eine andere Lösung besteht darin, die fehlerhaften Protokollnachrichten aus dev_appserver.py (und verwandten Modulen) auskommentieren. Das wäre ziemlich mühsam von Hand zu machen, aber ich habe ein Tool geschrieben, das Protokollierungsaufrufe in allen Dateien in einem bestimmten Ordner (und seinen Unterordnern) ersetzt - schau dir meinen Beitrag Python logging and performance: how to have your cake and eat it too an.

+0

Hey danke, ich denke Lösung 1 wird für mich arbeiten. Ich habe wirklich auf etwas wie log4j gehofft, bei dem ich den Root-Logger auf "debuggen" setzen und dann das Paket/den Ordner, der dev_appserver enthielt, auf "error" setzen sollte. – jpswain

+2

Btw, wo in meinem Code sollte ich die Bibliothek logging.setLevel (logging.ERROR) oder was auch immer. Gibt es einen Callback für onApplicationStart oder etwas ähnliches, das es auf alle App Engine anwenden wird, so dass ich es selektiv überschreiben kann? Vielen Dank – jpswain