logging

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
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Hallo,

Ich nutze das Python Modul parsedatetime. Dieses gibt nach meiner eigenen Konfiguration von logging debug Meldungen auf die Standardausgabe aus, was ich unterbinden möchte.
Im Modul selbst wird Logging eigentlich deaktiviert:

Code: Alles auswählen

import logging

try:  # Python 2.7+
    from logging import NullHandler
except ImportError:
    class NullHandler(logging.Handler):
        def emit(self, record):
            pass

log = logging.getLogger(__name__)
log.addHandler(NullHandler())
Ich vermute, dass das durch meine Einstellungen überschrieben wird? Also habe ich in der Konfiguration folgendes hinzugefügt:

Code: Alles auswählen

[logger_parsedatetime]
level=NOTSET
handlers=nullhandler
qualname=parsedatetime
propagate=0

[handler_nullhandler]
class=cloudfusion.mylogging.nullhandler.NullHandler
args=()
Und sowohl Logger als auch Handler als Wert der Variable "keys" zu den Abschnitten loggers und handlers hinzugefügt.
Trotzdem findet die Log Ausgabe weiterhin statt.
Überschreibe ich mit

Code: Alles auswählen

logging.config.fileConfig
wirklich die Konfiguration der anderen Module?
Übersehe ich da etwas, oder ist vielleicht

Code: Alles auswählen

__name__
in dem Modul ungleich "parsedatetime"?

Gruß,
Boa
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Bei Verwendung von der Kommandozeile aus kommen keine log Nachrichten, nur wenn ich das Programm über den in setup.py erstellten entry_point aufrufe.
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Also

Code: Alles auswählen

logging.config.fileConfig
überschreibt anscheinend vorherige Einstellungen. Da ich das parsedatetime Modul importiere ist dessen

Code: Alles auswählen

__name__
Attribut ungleich parsedatetime, also muss man den qualified name des Loggers entsprechend setzen:

Code: Alles auswählen

[logger_parsedatetime]
level=NOTSET
handlers=nullhandler
qualname=cloudfusion.third_party.parsedatetime.parsedatetime
propagate=0
Thx,
Boa
Antworten