Ich habe den folgenden Code in einer Datei namens 'logger.py'
%Vor%und in einer anderen Datei
%Vor%und ich bekomme die folgende Konsolenausgabe
%Vor%Ich kann die doppelte Ausgabe nicht deaktivieren. Ich möchte den zusätzlichen streamhandler verwenden, um die Protokollebene anzupassen, die auf der Konsole gedruckt wird. In Zukunft möchte ich auch den RotatingFileHandler anstelle des einfachen Dateihandlers verwenden.
Weiß jemand, wie man das erreicht, während das einfache Logger-Setup wie in der zweiten Datei beibehalten wird? Ich suche, aber keine Lösung scheint es zu tun.
UPDATE 1 (Gelöst)
Datei logger.py
Datei test.py
Konsolenausgabe:
%Vor% Test.log
content:
Der Grund für die doppelte Ausgabe liegt darin, dass Sie in Ihrer ersten Datei zwei StreamHandler eingerichtet haben. logger.py
Ein explizit in dieser Zeile:
%Vor%der andere in dieser Zeile:
%Vor%Laut den Dokumenten für logging.basicConfig :
Grundlegende Konfiguration für das Protokollierungssystem, indem ein StreamHandler mit einem Standard-Formatierer erstellt und zum Stammlogger hinzugefügt wird.
Sie sollten also die basicConfig-Zeile entfernen.
Aber nachdem Sie es entfernt haben, müssen Sie die Stufe für den Root-Logger auf DEBUG setzen, da Sie dies in der basicConfig-Zeile tun:
%Vor%Sie können damit beginnen, Ihre basicConfig zu löschen, die bereits einen StreamHandler zu Ihrem root-syslogger hinzugefügt hat, so dass Sie tatsächlich zwei StreamHandler haben:
%Vor%Dann musst du tun, was basicConfig für dich getan hat:
%Vor% Sie rufen logging.basicConfig()
auf, das standardmäßig auf StreamHandler
eingestellt ist. . Stattdessen sollten Sie die Ebene manuell festlegen.
Der Inhalt der Datei lautet:
%Vor% Außerdem überschreibst du deine logger
. In deinem another file
:
Ihre Protokollierungskonfiguration ist in diesem Fall , weil der Import Ihren Code durchläuft. In einigen anderen Fällen stimmt das vielleicht nicht. Korrigieren Sie, indem Sie den Variablennamen ändern oder das Konfigurationsschema vollständig ändern.