Wie kann ich das Protokollierungsmodul in Python verwenden, um in eine Datei zu schreiben? Jedes Mal, wenn ich versuche, es zu verwenden, wird nur die Nachricht ausgedruckt.
127
Wie kann ich das Protokollierungsmodul in Python verwenden, um in eine Datei zu schreiben? Jedes Mal, wenn ich versuche, es zu verwenden, wird nur die Nachricht ausgedruckt.
Ein Beispiel für die Verwendung von logging.basicConfig
anstattlogging.fileHandler()
logging.basicConfig(filename=logname,
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
logging.info("Running Urban Planning")
self.logger = logging.getLogger('urbanGUI')
In der Reihenfolge machen die fünf Teile Folgendes:
filename=logname
)filemode='a'
)format=...
)datefmt='%H:%M:%S'
)level=logging.DEBUG
).
if __name__ == '__main__':
if __name__ == '__main__':
nicht ausgeführt wird.Entnommen aus dem " Logging Cookbook ":
Und du kannst loslegen.
PS Lesen Sie auch das Protokollierungs-HOWTO .
quelle
logger.warning("message")
, nicht mitlogger.info("message")
noch in eine Datei schreibenlogger.debug("message")
. Das ist ein bisschen nervig.logger.setLevel(logging.DEBUG)
. Logger können mit mehreren Handlern konfiguriert werden. Die im Logger konfigurierte Ebene bestimmt, welche Protokollnachrichten mit Schweregrad an die einzelnen Handler gesendet werden sollen, und die in den Handlern festgelegten Ebenen bestimmen, welche Ebenen der Handler verarbeiten wird. Beachten Sie, dass diejenigen, die Infomeldungen drucken möchten, dies nurINFO
im Logger und im Handler festlegen müssen .logger.setLevel(logging.DEBUG)
- danke für die KommentareIch bevorzuge die Verwendung einer Konfigurationsdatei. Es ermöglicht mir, die Protokollierungsstufen, Speicherorte usw. zu wechseln, ohne den Code zu ändern, wenn ich von der Entwicklung zur Veröffentlichung übergehe. Ich packe einfach eine andere Konfigurationsdatei mit demselben Namen und denselben definierten Loggern.
Hier ist mein Code für die Protokollkonfigurationsdatei
quelle
%%
in Python 3 das Doppelte. ZBtime.strftime("%%Y%%m%%D")
http://docs.python.org/library/logging.html#logging.basicConfig
quelle
logging
Moduldokumentation erlaubt dies. Sie können sogar auswählen, welche Protokolle in das Terminal und welche in eine Datei und in viele weitere interessante Anwendungen gelangen. docs.python.org/3/howto/…Hier ist ein einfacher Weg, um es zu tun. Diese Lösung verwendet kein Konfigurationswörterbuch und verwendet einen Rotationsdatei-Handler wie folgt:
oder so:
Die Handlervariable muss iterierbar sein. logpath + filename und debug_level sind nur Variablen, die die entsprechenden Informationen enthalten. Natürlich liegen die Werte für die Funktionsparameter bei Ihnen.
Als ich das Protokollierungsmodul zum ersten Mal verwendete, habe ich den Fehler gemacht, Folgendes zu schreiben, was zu einem Fehler beim Sperren der Betriebssystemdatei führt (das Obige ist die Lösung dafür):
und Bob ist dein Onkel!
quelle
http://docs.python.org/library/logging.handlers.html#filehandler
quelle
FileHandler
für verschiedene Situationen verschiedene Arten von s gibt. (WatchedFileHandler
,RotatingFileHandler
usw.)quelle
quelle
Formatbeschreibung
Normale Art zu telefonieren
Ausgabe
Rufen Sie mit Dict Werte auf
otherMod2.py
Ausgabe
quelle