Ich fragte mich, was die Standard-Einrichtung für die Durchführung der Protokollierung von innerhalb einer Python-App ist.Wie verwende ich Python Logging in mehreren Modulen
Ich verwende die Protokollierungsklasse, und ich habe meine eigene Protokollierungsklasse geschrieben, die die Protokollierungsklasse instanziiert. Mein Hauptprogramm instanziiert dann meine Logger-Wrapper-Klasse. Mein Hauptprogramm instanziiert jedoch andere Klassen, und ich möchte, dass diese anderen Klassen auch über das Loggerobjekt im Hauptverzeichnis in die Protokolldatei schreiben können.
Wie mache ich das Logger-Objekt so, dass es von anderen Klassen aufgerufen werden kann? Es ist fast so, als ob wir eine Art statisches Logger-Objekt benötigen, um das zu erreichen.
Ich denke, die lange und kurze der Frage ist: Wie implementieren Sie die Protokollierung innerhalb Ihrer Code-Struktur, so dass alle Klassen aus Main innerhalb der gleichen Protokolldatei geschrieben werden können? Muss ich nur ein neues Protokollierungsobjekt in jeder der Klassen erstellen, die auf dieselbe Datei verweisen?
Sorry für ein wenig dicht hier .... also dann Wenn ich ein Hauptmodul habe, das meine eigene Log-Klasse instanziiert (die die Protokollierungsklasse enthält) dann ist es sicherlich einfach, Dinge durch einfaches Aufrufen meines Log-Objekts zu protokollieren. Wenn mein Hauptmodul jedoch andere Module importiert, wie kann ich einen Aufruf an meine Protokollklassenmethoden vornehmen, um zu protokollieren, ohne ein Protokollhandle an jede Methode zu übergeben? Können Sie ein Beispiel mit mehreren Modulen bereitstellen? – GregH
Ich habe ein Beispiel mit mehreren Modulen und der Funktion getLogger() bereitgestellt. Es ist selten, dass Sie die Logger-Klasse (logging.getLoggerClass()) erweitern müssen, wenn Sie wirklich einen Logger mit getLogger erstellen und einen benutzerdefinierten Handler konfigurieren möchten. Formatierer ist nicht genug für Ihre Bedürfnisse. Bitte erklären Sie, was die Logger-Klasse ist. – gonz
@GregH Hat mein Beispiel Sinn ergeben? Lassen Sie mich wissen, ob das Ihr Problem löst oder Sie weitere Erklärungen benötigen. – gonz