Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Modul: Protokollierung

Python-Modul: Protokollierung

高洛峰
高洛峰Original
2016-11-01 12:52:341422Durchsuche

Viele Programme müssen Protokolle aufzeichnen, und die in den Protokollen enthaltenen Informationen umfassen normale Programmzugriffsprotokolle und können auch Fehler, Warnungen und andere Informationsausgaben enthalten. Sie können es verwenden Speichert Protokolle in verschiedenen Formaten: Debug, Info, Warnung, Fehler und Kritisch. Schauen wir uns an, wie das Modul

verwendet wird

#logging初识
 
import logging
 
logging.warning("user [James] attempted wrong password more than 3 times")
logging.critical("server is down")
 
# WARNING:root:user [James] attempted wrong password more than 3 times
# CRITICAL:root:server is down
Der obige Code ist der einfachste Weg. Der Inhalt in Klammern ist die gedruckte Information, und die Methode nach der Protokollierung ist die Protokollebene. Schauen wir uns die detaillierten Informationen der fünf Protokollierungsebenen an

Python-Modul: ProtokollierungWenn Sie das Protokoll in eine Datei schreiben möchten, ist es auch ganz einfach:

logging.basicConfig definiert den Eingabedateipfad und die Eingabeprotokollinformationen Ebene, Eingabeformat und Format können angepasst werden. Nach der Ausführung des Codes generiert die Datei example.log die folgenden Informationen:
#日志打印到文件中
 
import  logging
 
logging.basicConfig(filename="example.log",level=logging.INFO,
                    format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %H:%M:%S [%A]")
                                                                # H 24小时格式  I 12小时格式  A 周几完整  a 周几简写  p AM/PM
 
 
logging.debug("This message should go to the log file")
logging.info("So should this")
logging.warning("And this ,too")

Das level=loggin.INFO im folgenden Satz bedeutet Um die Protokollierungsebene auf INFO zu setzen, werden nur Protokolle in der Datei aufgezeichnet, deren Ebene INFO oder höher ist. In diesem Beispiel wird das erste Protokoll nicht aufgezeichnet. Wenn Sie Debug-Protokolle aufzeichnen möchten, ändern Sie die Protokollebene zu DEBUG. Das ist es
10/31/2016 17:16:17 [Monday] So should this
10/31/2016 17:16:17 [Monday] And this ,too

Wenn Sie das Protokoll gleichzeitig auf dem Bildschirm und im Dateiprotokoll drucken möchten, müssen Sie einige komplizierte Kenntnisse kennen:

Die Protokollierungsbibliothek verfolgt einen modularen Ansatz und bietet mehrere Kategorien von Komponenten: Logger, Handler, Filter und Formatierer.

Logger stellen die Schnittstelle bereit, die der Anwendungscode direkt verwendet.

Handler senden die (von Loggern erstellten) Protokolldatensätze an das entsprechende Ziel.

Filter bieten eine feinere Möglichkeit zur Bestimmung, welche Protokolldatensätze ausgegeben werden sollen.

Formatierer geben das Layout der Protokolldatensätze in der endgültigen Ausgabe an .

Global Die Protokollebene ist das Endergebnis des gesamten Programms. Wenn Sie die lokale Protokollebene drucken möchten, darf sie nicht niedriger sein als diese Ebene
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian
 
import  logging
 
#创建logger
logger = logging.getLogger("test_log")  #创建logger对象   括号内容随便写
logger.setLevel(logging.INFO)       #全局日志级别
 
 
ch = logging.StreamHandler()        #日志打印到屏幕上
ch.setLevel(logging.DEBUG)          #指定ch日志打印级别
 
fh = logging.FileHandler("access.log")      #日志存进文件
fh.setLevel(logging.WARNING)            #指定fh日志输入级别
 
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")   #定义日志格式,可写多个
 
#添加日志格式到ch,fh
ch.setFormatter(formatter)
fh.setFormatter(formatter)
 
#添加ch,fh到logger中
logger.addHandler(ch)
logger.addHandler(fh)
 
 
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

Siebdruckinformationen

access.log:
2016-10-31 17:23:42,988 - test_log - INFO - info message
2016-10-31 17:23:42,988 - test_log - WARNING - warn message
2016-10-31 17:23:42,988 - test_log - ERROR - error message
2016-10-31 17:23:42,988 - test_log - CRITICAL - critical message

Alle Protokollformate:
2016-10-31 17:02:06,223 - test_log - WARNING - warn message
2016-10-31 17:02:06,224 - test_log - ERROR - error message
2016-10-31 17:02:06,224 - test_log - CRITICAL - critical message

Python-Modul: Protokollierung Mehrere wichtige Formate: %(lineno)d Ausgaben In der Codezeile des Druckprotokolls gibt %(process)d den Prozess des Druckens der Protokoll-ID aus, %(thread)d gibt die Thread-ID des Druckprotokolls aus

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn