Seite 1 von 1

logging

Verfasst: Montag 6. Oktober 2014, 10:13
von Boa
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

Re: logging

Verfasst: Montag 6. Oktober 2014, 11:10
von Boa
Bei Verwendung von der Kommandozeile aus kommen keine log Nachrichten, nur wenn ich das Programm über den in setup.py erstellten entry_point aufrufe.

Re: logging

Verfasst: Montag 6. Oktober 2014, 11:17
von Boa
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