Der folgende Code druckt "Ich möchte, dass dies gedruckt wird" in "ipython qtconsole", druckt jedoch nicht in normalem IPython.
%Vor%In 'IPython qtconsole' bekomme ich jedoch verschiedene Probleme, die ich zu erklären versuchte hier (was nicht so gut lief, keine Notwendigkeit zu lesen!).
Können Sie mir bitte sagen, warum?
EDIT: Ich benutze Python 2.7
EDIT2: Vielleicht muss ich nur logging.StreamHandler hinzufügen.
Es scheint, als ob qtconsole
einen Handler zum root
logger hinzufügt:
Bei Verwendung des normalen Python-Interpreters oder nur ipython
:
Wenn Sie wollen, dass sich beide gleich verhalten, sollten Sie entweder eine StreamHandler
zur Stammlogger für normale ipython
hinzufügen oder die StreamHandler
vom qtconsole Interpreter entfernen.
Wenn Sie den ersteren möchten, fügen Sie einfach hinzu:
%Vor%Wenn Sie letzteres wollen, vor fügen Sie Ihren eigenen Handler hinzu:
%Vor%Beachten Sie, dass IPython bereits einige Mechanismen zum Protokollieren einer Datei bereitstellt. Siehe die Dokumentation . Wenn Sie den Code nur innerhalb von ipython verwenden möchten, ist die Verwendung seiner Magie möglicherweise einfacher.
was für mich funktioniert hat
Importieren Sie den Logger VOR einer anderen Bibliothek / einem anderen Code in einer separaten Zelle. Das ist eigentlich die Hauptanforderung. Wenn ich Logging und andere Bibliotheken in einer Zelle lade, funktioniert die Protokollierung unabhängig von der Hierarchie in dieser Zelle nicht
%Vor%erst nach dem Laden von Bibliotheken habe ich Logging-Konfiguration gesetzt, um den Ausdruck von pypspark load debug zu vermeiden
%Vor%Wenn Sie Bakurius letztgenannte Lösung verwenden, wird es nicht richtig funktionieren, wenn root mehr als einen Handler hat, weil Probleme während des Iterierens beseitigt werden.
Verwenden Sie stattdessen:
%Vor%