Seite 1 von 1

Hilfe bei Python Logging Facility

Verfasst: Montag 23. Januar 2006, 16:39
von Mad-Marty
Hi,

ich habe mir angeschaut was ich mit der Python Logging Facility so anstellen kann, und finde das sehr sehr umfangreich.


Mein Ziel ist es Critical und Warnings in getrennte files zu loggen.

Das habe ich auch hinbekommen, über die externe config und die paar aufrufzeilen unten.

Dummerweise loggt aber der WARNING auch CRITICAL.
Wie bekomme ich das weg ?

Ich möchte unbedingt die externe config und das logging verwenden, da ich damit auch spätermal ohne viel aufwand netzwerklogging etc. einsetzen kann.


Ist es evtl total umständlich was ich da Konfiguriert hab ?

Code: Alles auswählen

[loggers]
keys=root,warn_logger,critical_logger

[handlers]
keys=warnhandler,criticalhandler

[formatters]
keys=timestamper

[logger_root]
level=NOTSET
handlers=warnhandler,criticalhandler
propagate=1


[logger_warn_logger]
level=WARN
handlers=warnhandler
qualname=warnlogger
propagate=1


[logger_critical_logger]
level=CRITICAL
handlers=criticalhandler
qualname=criticallogger
propagate=1



[handler_criticalhandler]
class=FileHandler
level=CRITICAL
formatter=timestamper
args=("./fatal.log","w")


[handler_warnhandler]
class=FileHandler
level=WARN
formatter=timestamper
args=("./warnings.log","w")



[formatter_timestamper]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S


Der Aufruf im programm ist dann :

Code: Alles auswählen

logging.config.fileConfig("./config.ini")
        #create logger
        logger = logging.getLogger()
        
        

        logger.debug("debug message")
        logger.info("info message")
        logger.warn("warn message")
        logger.error("error message")
        logger.critical("critical message")
        
        logger.warn("meine warning")

Verfasst: Montag 23. Januar 2006, 16:46
von modelnine
Es ist eigentlich Sinn der Sache dass der WARN-Handler auch alles loggt was in CRITICAL geht, denn schließlich ist das eine >= Relation, und kein direkter Vergleich ob die Loglevels übereinstimmen. Zumindest funktioniert logging so unter Unix, und logger ist mehr oder weniger eine Kopie des syslog-Systems.

Ich wüßte jetzt ehrlich gesagt auch nicht dass man das ändern kann, aber guck in die Doku auf python.org, da steht sicherlich mehr.

--- Heiko.

Verfasst: Montag 23. Januar 2006, 23:24
von Mad-Marty
modelnine hat geschrieben:Es ist eigentlich Sinn der Sache dass der WARN-Handler auch alles loggt was in CRITICAL geht, denn schließlich ist das eine >= Relation, und kein direkter Vergleich ob die Loglevels übereinstimmen. Zumindest funktioniert logging so unter Unix, und logger ist mehr oder weniger eine Kopie des syslog-Systems.

Ich wüßte jetzt ehrlich gesagt auch nicht dass man das ändern kann, aber guck in die Doku auf python.org, da steht sicherlich mehr.

--- Heiko.
Habe die Doku gecheckt, steht nichts darüber drin - naja schade.

Blos wo ist dann der sinn der ewig gross auslegbaren verzweigungen ... ;)

ok, trotzdem danke für die Antowort.

Verfasst: Montag 23. Januar 2006, 23:31
von modelnine
Der Sinn hinter dem Syslog-System ist es eben eine Datei zu haben in der nur alles ab Level ERROR drin sind (/var/log/auth/error zum Bleistift, ja auch critical Fehler sind Fehler), und alles ab einem gewissen Level in eine andere Datei zu schreiben (zum Beispiel /var/log/everything oder /var/log/messages ab INFO).

Das System macht so schon Sinn. Du kannst halt festlegen dass in eine Datei (oder eben in einen Log-Stream) nur ganz wichtige Meldungen kommen, in einen anderen halt eben alles, usw.

--- Heiko.

Verfasst: Montag 23. Januar 2006, 23:33
von Mad-Marty
Ja halt nur schade, mir wäre eine standard log exclusive criticals lieber ;)

Aber das ist eine reine philosophie frage ....