Heim  >  Artikel  >  Backend-Entwicklung  >  Lernprotokollierung des Python-Moduls

Lernprotokollierung des Python-Moduls

黄舟
黄舟Original
2016-12-17 16:47:11954Durchsuche

1. Drucken Sie einfach das Protokoll auf dem Bildschirm aus

Protokollierung importieren

logging.debug('Dies ist eine Debug-Nachricht')
logging.info('Dies ist eine Info-Nachricht' )
logging.warning('Dies ist eine Warnmeldung')



Drucken Sie auf dem Bildschirm:
WARNUNG:root:Dies ist eine Warnmeldung

Standardmäßig werden bei der Protokollierung Protokolle auf dem Bildschirm angezeigt, und die Protokollebene ist WARNUNG. Die Protokollebenenbeziehung lautet: KRITISCH > WARNUNG > INFO > Natürlich können Sie den Log-Level auch selbst festlegen.

2. Konfigurieren Sie das Protokollausgabeformat und die Protokollausgabemethode über die Funktion logging.basicConfig

Protokollierung importieren


logging.basicConfig(level=logging.DEBUG,
format= '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y % H: %M:%S',
                                                                                                                            .info('Dies ist eine Infonachricht')
logging.warning('Dies ist eine Warnmeldung')



./myapp. Der Inhalt der Protokolldatei lautet:
Sonntag, 24. Mai 2009 21:48:54 demo2.py[line:11] DEBUG Dies ist eine Debug-Nachricht
Sonntag, 24. Mai 2009 21:48:54 demo2.py[line: 12] INFO Dies ist eine Infonachricht
Sonntag, 24. Mai 2009 21:48:54 demo2.py[line:13] WARNUNG Dies ist eine Warnnachricht


Parameter der Funktion logging.basicConfig:
Dateiname: Geben Sie den Namen der Protokolldatei an
Dateimodus: Es hat die gleiche Bedeutung wie die Dateifunktion und gibt den Öffnungsmodus der Protokolldatei an, „w“ oder „a“
Format: Geben Sie das Format und den Inhalt der Ausgabe an. Das Format kann viele nützliche Informationen ausgeben, wie im obigen Beispiel gezeigt:

%(levelno)s: Gibt den Wert der Protokollebene aus

%(levelname)s: Name der Protokollebene drucken
%(pathname)s: Gibt den Pfad des aktuell ausgeführten Programms aus, der eigentlich sys.argv[0]
%(filename)s ist: Den Namen des aktuell ausgeführten Programms drucken
%(funcName)s: Die aktuelle Funktion des Protokolls drucken
%(lineno)d: Die aktuelle Zeilennummer des Protokolls drucken
%(asctime)s: Zeit zum Drucken des Protokolls
%(thread)d: Thread-ID drucken
%(threadName)s: Thread-Namen drucken
%(PRocess)d: Prozess-ID drucken
%(message)s: Protokollinformationen drucken
datefmt: Gibt das Zeitformat an, genau wie time.strftime()
level: Legen Sie die Protokollebene fest, die Standardeinstellung ist logging.WARNUNG
Stream: Geben Sie den Ausgabestream des Protokolls an. Sie können die Ausgabe in sys.stderr, sys.stdout oder in einer Datei angeben. Wenn Stream und Dateiname gleichzeitig angegeben werden, wird Stream ignoriert >
3. Geben Sie das Protokoll gleichzeitig aus. Ausgabe in Datei und Bildschirm

Protokollierung importieren

logging.basicConfig(level=logging.DEBUG,

                format='%(asctime)s %(filename)s[line:%( lineno)d] %(levelname)s %(message)s',

                datefmt='%a, %d %b %Y %H:%M:%S' ,

                                                       ',

filemode='w')################################## ## ############################################# #########Definieren Sie einen StreamHandler, um Protokollinformationen der INFO-Ebene oder höher als Standardfehler zu drucken, und fügen Sie sie dem aktuellen Protokollverarbeitungsobjekt hinzu. #console = logging.StreamHandler()
setLevel(logging.INFO )
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
getLogger('') .addHandler(console)################################################# ###############################################


logging.debug('Dies ist eine Debug-Meldung')
logging.info('Dies ist eine Info-Meldung')
logging.warning('Dies ist eine Warnmeldung')

Auf dem Bildschirm drucken:
root : INFO Dies ist eine Infomeldung
root : WARNING Dies ist eine Warnmeldung

./myapp Der Inhalt in der .log-Datei ist:
Sonntag, 24. Mai 2009 21:48:54 demo2.py[line:11] DEBUG Dies ist eine Debug-Nachricht
Sonntag, 24. Mai 2009 21:48:54 demo2.py[line:12] INFO Dies ist eine Infomeldung
Sonntag, 24. Mai 2009 21:48:54 demo2.py[line:13] WARNUNG Dies ist eine Warnmeldung


4.logging log return Geh raus

Import loggingfrom logging.handlers import RotatingFileHandler#################################### ## ############################################### ####Definieren Sie einen RotatingFileHandler, um bis zu 5 Protokolldateien zu sichern. Jede Protokolldatei hat maximal 10MRthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024, backupCount=5)
Rthandler . setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
Rthandler.setFormatter(formatter)
logging . getLogger('').addHandler(Rthandler)#################################### ############################################### ###

Wie aus dem obigen Beispiel und diesem Beispiel ersichtlich ist, verfügt die Protokollierung über ein Hauptobjekt für die Protokollverarbeitung, und andere Verarbeitungsmethoden werden über addHandler hinzugefügt.
Die verschiedenen Handle-Methoden für die Protokollierung sind wie folgt:

logging.StreamHandler: Das Protokoll wird an den Stream ausgegeben, der sys.stderr, sys.stdout oder die Datei logging.FileHandler sein kann: Das Protokoll wird an die Datei

Protokoll-Rollback-Methode ausgegeben. Bei der tatsächlichen Verwendung handelt es sich um RotatingFileHandler und TimedRotatingFileHandler gebraucht logging.handlers.BaseRotatingHandler logging.handlers.RotatingFileHandler logging.handlers.TimedRotatingFileHandler

logging.handlers.SocketHandler: Protokolle remote an TCP/IP-Sockets ausgeben

logging.handlers.DatagramHandler: Protokolle remote an UDP-Sockets ausgeben

logging.handlers.SMTPHandler: Protokolle remote an die E-Mail-Adresse

logging.handlers.SysLogHandler ausgeben: Protokollausgabe an syslog

logging.handlers.NTEventLogHandler: Protokolle aus der Ferne in das Ereignisprotokoll von Windows NT/2000/XP ausgeben

logging.handlers.MemoryHandler: Das Protokoll wird in den angegebenen Puffer im Speicher ausgegeben

logging.handlers.HTTPHandler: Remote-Ausgabe an den HTTP-Server über „GET“ oder „POST“

Da StreamHandler und FileHandler häufig verwendete Protokollverarbeitungsmethoden sind, sind sie direkt im Protokollierungsmodul enthalten, während andere Methoden enthalten sind im logging.handlers-Modul
Informationen zur Verwendung anderer oben genannter Verarbeitungsmethoden finden Sie im Python2.5-Handbuch!

5. Konfigurieren Sie Protokolle über das logging.config-Modul

#logger.conf

################ # ########################## [loggers]
keys=root,example01,example02

[logger_root]
level=DEBUG
handlers=hand01,hand02

[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0

[ logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
######################## ################### [handlers]
keys=hand01,hand02,hand03

[handler_hand01]

class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)

[handler_hand02]class=FileHandler
level=DEBUG
formatter =form01
args=('myapp.log', 'a')

[handler_hand03]class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args= ( 'myapp.log', 'a', 10*1024*1024, 5)
########################## ## ################# [formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s % (filename )s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S

[ formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=
import loggingimport logging.config

logging.config fileConfig( "logger.conf")
logger = logging.getLogger("example01")

logger.debug('Dies ist eine Debug-Nachricht')
logger.info('Dies ist eine Info-Nachricht ')
logger.warning('Dies ist eine Warnmeldung')
import loggingimport logging.config

logging.config.fileConfig("logger.conf")
logger = logging.getLogger (" example02")

logger.debug('Dies ist eine Debug-Meldung')
logger.info('Dies ist eine Info-Meldung')
logger.warning('Dies ist eine Warnmeldung')

6. Die Protokollierung ist threadsicher

Das Obige ist der Inhalt der Lernprotokollierung im Python-Modul. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php .cn)!


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