Heim > Artikel > Backend-Entwicklung > Zusammenfassung der Verwendung von Protokollierungsbibliotheken in Python
Das Protokollierungsmodul von Python bietet ein allgemeines Protokollierungssystem, das von Modulen oder Anwendungen von Drittanbietern verwendet werden kann. Der folgende Artikel stellt Ihnen hauptsächlich einige Wissenszusammenfassungen über die Verwendung von Protokollierungsbibliotheken in Python vor Code, Freunde in Not können darauf verweisen, schauen wir uns unten an.
Vorwort
Aus beruflichen Gründen habe ich in letzter Zeit einige Python-Skripte geschrieben, um immer Print zum Drucken zu verwenden Informationen, also habe ich mir die Zeit genommen, die Protokollierungsbibliothek von Python zu studieren, um Protokolle elegant aufzuzeichnen. Ich werde im Folgenden nicht näher darauf eingehen, werfen wir einen Blick auf die detaillierte Einführung.
1. Drucken Sie das Protokoll einfach auf dem Bildschirm aus:
import logging logging.debug('This is debug message') #debug logging.info('This is info message') #info logging.warning('This is warning message') #warn
Bildschirm Drucken am: WARNING:root:This is warning message
Standardmäßig werden Protokolle der Stufe WARNUNG gedruckt
DEBUG: detaillierte Informationen, Debugging-Informationen.
INFO: Bestätigt, dass alles wie erwartet funktioniert.
WARNUNG: Weist darauf hin, dass etwas Unerwartetes passiert ist oder in naher Zukunft ein Problem auftreten wird (z. B. „Datenträger voll“). Die Software funktioniert weiterhin normal.
FEHLER: Aufgrund schwerwiegenderer Probleme kann die Software einige Funktionen nicht mehr ausführen.
KRITISCH: Ein schwerwiegender Fehler, der darauf hinweist, dass die Software nicht mehr ausgeführt werden kann.
2. Konfigurieren Sie das Protokolleingabeformat und die Methode über die basicConfig-Funktion
import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%Y-%m-%d %a %H:%M:%S', filename='test.log', filemode='w') logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message')
Der obige Code druckt das Protokoll nicht auf dem Bildschirm, sondern generiert die Protokolldatei test.log im aktuellen Verzeichnis. Das Protokoll wird in der Protokolldatei gedruckt:
2017-10-16 Mo 10:05:17 testlogging.py[line:25] DEBUG Dies ist eine Debug-Meldung
2017-10-16 Mo 10:05:17 testlogging.py[ Zeile :26] INFO Dies ist eine Infonachricht
2017-10-16 Mon 10:05:17 testlogging.py[line:27] WARNUNG Dies ist eine Warnnachricht
Parameter der logging.basicConfig-Funktion:
Dateiname: Geben Sie den Protokolldateinamen an.
Dateimodus: Dieselbe Bedeutung wie Dateifunktion, geben Sie den Protokolldateiöffnungsmodus „w“ oder „a“ an das obige Beispiel:
%(levelno)s: 打印日志级别的数值 %(levelname)s: 打印日志级别名称 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0] %(filename)s: 打印当前执行程序名 %(funcName)s: 打印日志的当前函数 %(lineno)d: 打印日志的当前行号 %(asctime)s: 打印日志的时间 %(thread)d: 打印线程ID %(threadName)s: 打印线程名称 %(process)d: 打印进程ID %(message)s: 打印日志信息
Ebene: Legen Sie die Protokollebene fest, die Standardeinstellung ist Protokollierung.WARNUNG
Stream: Geben Sie den Ausgabestream des Protokolls an. Sie können den festlegen Ausgabe an sys.stderr, sys.stdout oder eine Datei, die Standardausgabe erfolgt an sys. Wenn Stream und Dateiname gleichzeitig angegeben werden, wird Stream ignoriert
Fügen Sie den obigen Code ein um das Protokoll gleichzeitig auf dem Bildschirm zu drucken
#定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象 console = logging.StreamHandler() console.setLevel(logging.INFO) formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') console.setFormatter(formatter) logging.getLogger('').addHandler(console)Auf dem Bildschirm drucken:
4. Konfigurieren Sie Protokolle über Konfigurationsdateien
Protokollformat
#logger.conf [loggers] #定义logger模块,root是父类,必需存在的,其它的是自定义。 keys=root,infoLogger,warnlogger [logger_root] level=DEBUG #level 级别,级别有DEBUG、INFO、WARNING、ERROR、CRITICAL handlers=infohandler,warnhandler #handlers 处理类,可以有多个,用逗号分开 [logger_infoLogger] #[logger_xxxx] logger_模块名称 handlers=infohandler qualname=infoLogger #qualname logger名称,应用程序通过 logging.getLogger获取。对于不能获取的名称,则记录到root模块。 propagate=0 #propagate 是否继承父类的log信息,0:否 1:是 [logger_warnlogger] handlers=warnhandler qualname=warnlogger propagate=0 ############################################### #定义handler [handlers] keys=infohandler,warnhandler [handler_infohandler] class=StreamHandler #class handler类名 level=INFO #level 日志级别 formatter=form02 #formatter,下面定义的formatter args=(sys.stdout,) #args handler初始化函数参数 [handler_warnhandler] class=FileHandler level=WARN formatter=form01 args=('logs/deploylog.log', 'a') ############################################### # 定义格式化输出 [formatters] keys=form01,form02 [formatter_form01] format=%(message)s %(asctime)s datefmt=%Y-%m-%d %H:%M:%S [formatter_form02] format=%(asctime)s %(levelname)s %(message)s datefmt=%Y-%m-%d %H:%M:%S
%(asctime)s Jahr-Monat-Tag Stunde-Minute-Sekunde, Millisekunde 2013-04-26 20:10:43,745
%(filename)s Dateiname, ohne Verzeichnis
%(pathname)s Verzeichnis Name, vollständiger Pfad
%(funcName)s Funktionsname
%(levelname)s Ebenenname
%(lineno)d Zeilennummer
%(module)s Modulname
%(message)s Nachrichtentext
%(name)s Protokollmodulname
%(process)d Prozess-ID
%(processName)s Prozessname
%(thread)d Thread-ID
%(threadName)s Threadname
Testkonfigurationsdatei
from logging.config import fileConfig fileConfig('logger.conf') logger=logging.getLogger('infoLogger') logger.info('test1') logger_error=logging.getLogger('warnhandler') logger_error.warn('test5')
Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung von Protokollierungsbibliotheken in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!