Wenn ich den Funktionsnamen haben möchte, kann ich einfach %(funcName)s
in den Formatierer einfügen. Aber wie bekomme ich stattdessen den Namen der Klasse, die den Protokollierungsaufruf enthält?
Ich habe die Dokumentation für logging
durchgesehen, aber ich kann keine Erwähnung finden.
Um einen einfachen, pythischen Weg zu finden, den Klassennamen mit Ihrem Logger auszugeben, verwenden Sie einfach eine Protokollierungsklasse.
%Vor% Wenn Sie den Logger wie oben angegeben benennen, ist %(name)s
der Name Ihrer Klasse
Nichtvererbung
%Vor%Ich persönlich tendiere dazu, meine Logger nach den Klassen zu benennen, da es viel einfacher ist herauszufinden, woher eine bestimmte Nachricht kommt. So können Sie einen Root-Logger namens "top" haben, und für das Modul "a" und die Klasse "testclass", ich meine Logger "top.a.testclass".
Ich sehe keine Notwendigkeit, den Klassennamen anderweitig abzurufen, da die Protokollnachricht Ihnen alle Informationen geben soll, die Sie benötigen.
@ eds Antwort oben, es fühlt sich sehr unpythonisch an und es ist nicht etwas, womit ich mich bei der Verwendung von Produktionscode zufrieden geben würde.
Dies ist eine Funktion zum Erstellen einer informativen Protokollnachricht mit der Repräsentationsklassenmethode:
%Vor%Dies kann für jede Klasse mit einem Mix-in implementiert werden:
%Vor%Sie können dann einer Klasse mit Mehrfachvererbung zugeordnet werden:
%Vor%Verwendung
%Vor%