Von den Docs:
Klasse logging.Formatter(fmt=None, datefmt=None)
Gibt eine neue Instanz der Klasse Formatter zurück. Die Instanz wird mit einem Formatstring für die Nachricht als Ganzes initialisiert, sowie mit einem Formatstring für den Datum/Uhrzeit-Teil einer Nachricht. Wenn kein fmt angegeben ist, wird '%(message)s' verwendet. Wenn kein datefmt angegeben ist, wird das ISO8601-Datumformat verwendet.
Auch:
Wenn der Formatierungsstring '(asctime)'
enthält, wird formatTime()
aufgerufen, um die Ereigniszeit zu formatieren.
Also, Sie können entweder einen datefmt
angeben oder eine benutzerdefinierte Formatter
-Unterklasse mit Ihrer eigenen formatTime
-Überschreibung erstellen.
Und wenn Sie zwischen Lokalzeit und GMT-Zeit (oder etwas anderem) wählen möchten:
Standardmäßig wird time.localtime() verwendet; um dies für eine bestimmte Formatter-Instanz zu ändern, setzen Sie das converter-Attribut auf eine Funktion mit derselben Signatur wie time.localtime() oder time.gmtime(). Um dies für alle Formatter zu ändern, z.B. wenn Sie wollen, dass alle Log-Zeiten in GMT angezeigt werden, setzen Sie das converter-Attribut in der Formatter-Klasse.
Die Argumente format
und datefmt
können auch an basicConfig
übergeben werden, wenn Sie keinen expliziten Formatter
verwenden. Auf diese Weise können Sie keinen converter
setzen - aber das müssen Sie auch nicht, da die Standardeinstellung die Lokalzeit ist.
Also:
logging.basicConfig(format='%(asctime)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
log = logging.getLogger(__name__)
log.error('Out of cheese!')
Ich habe dies um 16:11:30 Uhr Ortszeit ausgeführt, und die Ausgabe ist:
2013-01-08 16:11:30 Out of cheese!
Tatsächlich sieht es so aus, als ob Sie nur die Millisekunden aus dem Standard-Zeitformat entfernen wollen, was Sie noch einfacher tun können, indem Sie einfach den String abschneiden:
logging.basicConfig(format='%(asctime)-.19s %(message)s')
Jedoch finde ich es sinnvoller, das Datumsformat explizit anzugeben.