Python Tornado - deaktivieren Sie die Protokollierung in stderr

8

Ich habe eine minimalistische Tornado-Anwendung:

%Vor%

Tornado meldet Fehlermeldungen weiterhin an stderr:

%Vor%

Frage: Es soll verhindern, dass Fehlermeldungen protokolliert werden. Wie?

Tornado Version 3.1; Python 2.6

    
Zaar Hai 20.01.2014, 12:57
quelle

3 Antworten

12

Es ist klar, dass "jemand" das Logging-Subsystem initialisiert, wenn wir Tornado starten. Hier ist der Code von ioloop.py , der das Geheimnis enthüllt:

%Vor%

basicConfig wird aufgerufen und konfiguriert den standardmäßigen stderr -Handler.

Um die ordnungsgemäße Protokollierung für den Tonado-Zugriff einzurichten, müssen Sie:

  1. Fügen Sie einen Handler zu tornado.access logger: logging.getLogger("tornado.access").addHandler(...)

  2. hinzu
  3. Deaktivieren Sie die Weitergabe für den obigen Logger: logging.getLogger("tornado.access").propagate = False . Andernfalls werden die Nachrichten sowohl an Ihren Handler als auch an stderr

  4. gesendet
Zaar Hai 20.01.2014, 13:15
quelle
11

Die vorherige Antwort war korrekt, aber ein wenig unvollständig. Dies sendet alles an den NullHandler:

%Vor%     
SalientGreen 01.07.2015 21:56
quelle
3

Du könntest auch ganz einfach (in einer Zeile) tun:

%Vor%     
Ali 07.09.2015 11:49
quelle

Tags und Links