Logging über Instanz

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Heon
User
Beiträge: 8
Registriert: Dienstag 27. Februar 2018, 10:03

Sonntag 4. März 2018, 16:23

Hallo,

ich habe folgende Konstellation:
Ich habe mir ein Modul A zum Logging geschrieben mit einer Klasse KL_A in diesem Modul, welche das ganze Logging abhandelt.
Parallel habe ich ein andere Modul B mit einer Klasse KL_B , welche verschiedene Funktionalitäten abdeckt (welche jetzt aber bzgl. des Inhalts für die Frage nicht von Bedeutung sind).

Ich möchte nun, dass auch Klasse KL_B in Modul B mit derselben Logging-Instanz arbeitet, wie ich sie in meinem Programm instanziiert habe. Dazu übergebe ich einfach die Logging-Instanz an die Klasse B bei der Instanziierung.

Mein Programm sieht nun so aus:

Code: Alles auswählen

import A
import B

xlog = A.KL_A()
xlog.logausgabe("test") # Testen ob das Logging funktioniert

irgendwas = B.KL_B(xlog)
Ich frage mich aber ob das der Weiheit letzter Schluß ist oder ob es nicht eine elegantere Möglichkeit gibt um sicherzustellen, dass Modulübergreifend immer diesselbe Logging-Instanz verwendet wird.

Danke + grüße

Heon
__deets__
User
Beiträge: 4012
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 4. März 2018, 16:36

Das logging System ist schon von alleine so gebaut. Wenn du logging.getLogger(Name) mehrfach aufrufst, bekommst du immer die gleich logger Instanz zurück.

Allerdings klingt dein Vorgehen etwas holperig. Normalerweise holen sich Module ihren jeweils eigenen logger. Konfiguriert wird dann meistens nur der root logger, da alle anderen Logger per default an den durchreichen.
Sirius3
User
Beiträge: 8798
Registriert: Sonntag 21. Oktober 2012, 17:20

Sonntag 4. März 2018, 18:35

@Heon: Du solltest Dir kein eigenes Logging-System bauen, da es schon ein fertiges gibt. Für all Deine Fragen gibt es da schon Standardlösungen.
Antworten