Ich verwende Protokollierung (Protokollierung importieren), um Nachrichten zu protokollieren.Protokollierung mit Filtern
Innerhalb von einem einzigen Modul protokolliere ich Nachrichten auf der Debug-Ebene (my_logger.debug ('msg'));
Einige dieser Debug-Meldungen stammen von function_a() und andere von function_b(); Ich möchte die Protokollierung aktivieren/deaktivieren basierend darauf, ob sie von einem oder von b kommen;
Ich vermute, dass ich Logging-Filter-Mechanismus verwenden muss.
Kann mir bitte jemand zeigen, wie der unten stehende Code instrumentiert werden müsste, um das zu tun, was ich will? Vielen Dank.
import logging
logger= logging.getLogger("module_name")
def function_a(...):
logger.debug("a message")
def function_b(...):
logger.debug("another message")
if __name__ == "__main__":
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
#don't want function_a()'s noise -> ....
#somehow filter-out function_a's logging
function_a()
#don't want function_b()'s noise -> ....
#somehow filter-out function_b's logging
function_b()
Wenn ich dieses einfache Beispiel, um weitere Module skaliert und mehr funcs pro Modul, würde ich über viele Loggern betroffen sein;
Kann ich es auf 1 Logger pro Modul beschränken? Beachten Sie, dass die Log-Nachrichten "strukturiert" sind, dh wenn die Logging-Funktion einige Parsing-Arbeiten durchführt, enthalten sie alle ein Präfix logger.debug ("parsing: xxx") - kann ich irgendwie mit einer einzelnen Zeile einfach schließen - alle "Parsing" -Nachrichten abbrechen (unabhängig von dem Modul/der Funktion, die die Nachricht ausgibt?)
Ich musste den Filter zum Handler hinzufügen. –