Python-Protokollierungskonfigurationsdatei
Ich zu sein scheinen mit einigen Problemen beim implementieren der Protokollierung in mein python Projekt.
Ich bin einfach nur versuchen zu imitieren die folgende Konfiguration:
Python-Logging, um Mehrere Ziele
Jedoch statt dies zu tun, im inneren des Codes, ich hätte es gern in einer Konfigurationsdatei.
Unten ist meine config Datei:
[loggers]
keys=root
[logger_root]
handlers=screen,file
[formatters]
keys=simple,complex
[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
[formatter_complex]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s
[handlers]
keys=file,screen
[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=complex
level=DEBUG
args=('logs/testSuite.log',)
[handler_screen]
class=StreamHandler
formatter=simple
level=INFO
args=(sys.stdout,)
Das problem ist, dass mein Bildschirm-Ausgabe sieht so aus:
2010-12-14 11:39:04,066 - root - WARNUNG - 3
2010-12-14 11:39:04,066 - root - ERROR - 4
2010-12-14 11:39:04,066 - root - KRITISCHE - 5
Meine Datei ausgegeben werden, sieht aber das gleiche wie oben (wenn auch mit der zusätzliche Informationen enthalten). Aber die debug-und info-Ebenen werden nicht ausgegeben.
Bin ich auf Python 2.7
Hier ist mein einfaches Beispiel zeigt Fehler:
import os
import sys
import logging
import logging.config
sys.path.append(os.path.realpath("shared/"))
sys.path.append(os.path.realpath("tests/"))
class Main(object):
@staticmethod
def main():
logging.config.fileConfig("logging.conf")
logging.debug("1")
logging.info("2")
logging.warn("3")
logging.error("4")
logging.critical("5")
if __name__ == "__main__":
Main.main()
InformationsquelleAutor der Frage Scott | 2010-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es aussieht haben die Grad für Ihre Handler, aber nicht Ihren logger. Das logger-level-Filter jede Nachricht, bevor es an seine Handler, und der Standardwert ist
WARNING
und oben (wie man sieht). Setzen der root-logger der level zuNOTSET
als Sie haben, sowie die EinstellungDEBUG
(oder was auch immer ist die niedrigste Stufe, die Sie anmelden möchten) sollte sich eine Lösung für Ihr Problem.InformationsquelleAutor der Antwort bdeniker
Fügen Sie folgende Zeile in das root-logger kümmerte sich um mein problem:
InformationsquelleAutor der Antwort Scott
Ich denke, Sie sollten hinzufügen der disable_existing_loggers auf false.
InformationsquelleAutor der Antwort wcc526
Nur hinzufügen log-level in
[logger_root]
. Es ist gearbeitet.InformationsquelleAutor der Antwort P113305A009D8M