Heim > Artikel > Backend-Entwicklung > Lernprotokollierung des Python-Moduls
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.
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:
%(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,
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)!