Fügen Sie der Ausgabe des Pythons logging
Farben hinzu.
Colorlog benötigt derzeit Python 3.6 oder höher. Ältere Versionen (unter 5.xx) unterstützen Python 2.6 und höher.
Colorama ist als erforderliche Abhängigkeit enthalten und bei Verwendung von Colorlog unter Windows initialisiert.
Diese Bibliothek ist über ein Jahrzehnt alt und unterstützte den größten Teil ihres Lebens eine breite Reihe von Python -Versionen, was es zu einer schwierigen Bibliothek gemacht hat, neue Funktionen hinzuzufügen. ColorLog 6 kann die Kompatibilität rückwärts brechen, damit neuere Funktionen einfacher hinzugefügt werden können, aber möglicherweise nicht alle Änderungen oder Feature -Anfragen akzeptieren. Colorlog 4 akzeptiert möglicherweise wesentliche Fehler, sollte jedoch nicht als aktiv gewartet angesehen werden und werden keine größeren Änderungen oder neuen Funktionen akzeptieren.
Installieren Sie von PYPI mit:
pip install colorlog
Mehrere Linux -Distributionen bieten offizielle Pakete (Debian, Arch, Fedora, Gentoo, OpenSuse und Ubuntu), und andere haben von Benutzern bereitgestellte Pakete (BSD -Ports, Conda).
import colorlog
handler = colorlog . StreamHandler ()
handler . setFormatter ( colorlog . ColoredFormatter (
'%(log_color)s%(levelname)s:%(name)s:%(message)s' ))
logger = colorlog . getLogger ( 'example' )
logger . addHandler ( handler )
Die ColoredFormatter
-Klasse enthält mehrere Argumente:
format
: Die Formatzeichenfolge, die zur Ausgabe der Meldung verwendet wird (erforderlich).datefmt
: Ein optionales Datumsformat, das an die Basisklasse übergeben wurde. Siehe logging.Formatter
.reset
: Fügt der Nachrichtenausgabe implizit einen Farb -Reset -Code hinzu, es sei denn, die Ausgabe endet bereits mit einem. Standardmäßig True
.log_colors
: Eine Zuordnung von Datensatznamen zu Farbnamen. Die Standardeinstellungen finden Sie in colorlog.default_log_colors
oder dem folgenden Beispiel.secondary_log_colors
: Eine Zuordnung von Namen zu log_colors
-Style -Zuordnungen, die zusätzliche Farben definieren, die in Formatketten verwendet werden können. Ein Beispiel finden Sie unten.style
: Erhältlich auf Python 3.2 und höher. Siehe logging.Formatter
.Color Escape -Codes können basierend auf der Log -Datensätze ausgewählt werden, indem der Format -Zeichenfolge Parameter hinzugefügt wird:
log_color
: Geben Sie die mit der Aufzeichnungsstufe zugeordnete Farbe zurück.<name>_log_color
: Geben Sie eine andere Farbe basierend auf der Aufzeichnungsebene zurück, wenn der Formatierer sekundärer Farben konfiguriert ist (siehe secondary_log_colors
unten). Mehrere Fluchtcodes können gleichzeitig verwendet werden, indem Sie sie mit Kommas verbinden, wenn die Farbe für eine Protokollebene konfiguriert wird (aber nicht direkt in der Formatzeichenfolge verwendet werden). Zum Beispiel würde black,bg_white
die Escape -Codes für schwarzen Text auf weißem Hintergrund verwenden.
Die folgenden Escape -Codes werden für die Verwendung in der Formatzeichenfolge zur Verfügung gestellt:
{color}
, fg_{color}
, bg_{color}
: Vordergrund und Hintergrundfarben.bold
, bold_{color}
, fg_bold_{color}
, bg_bold_{color}
: BOLD/Light Colors.thin
, thin_{color}
, fg_thin_{color}
: dünne Farben (terminalabhängig).reset
: Löschen Sie alle Formatierung (sowohl Vordergrund- als auch Hintergrundfarben).Die verfügbaren Farbnamen sind:
black
red
green
yellow
blue
,purple
cyan
white
Sie können auch "helle" Farben verwenden. Dies sind keine Standard -ANSI -Codes und die Unterstützung für diese variiert in verschiedenen Terminals sehr unterschiedlich.
light_black
light_red
light_green
light_yellow
light_blue
light_purple
light_cyan
light_white
Der folgende Code erstellt eine ColoredFormatter
für die Verwendung in einem Protokollierungsaufbau, wobei die Standardwerte für jedes Argument verwendet werden.
from colorlog import ColoredFormatter
formatter = ColoredFormatter (
"%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s" ,
datefmt = None ,
reset = True ,
log_colors = {
'DEBUG' : 'cyan' ,
'INFO' : 'green' ,
'WARNING' : 'yellow' ,
'ERROR' : 'red' ,
'CRITICAL' : 'red,bg_white' ,
},
secondary_log_colors = {},
style = '%'
)
secondary_log_colors
Sekundäre Protokollfarben sind eine Möglichkeit, mehr als eine Farbe zu haben, die basierend auf der Protokollebene ausgewählt wird. Jeder Schlüssel in secondary_log_colors
fügt ein Attribut hinzu, das in Formatzeichenfolgen verwendet werden kann ( message
wird message_log_color
) und hat einen entsprechenden Wert, der im Format mit dem Argument log_colors
identisch ist.
Das folgende Beispiel unterstreicht den Ebenennamen mithilfe der Standardprotokollfarben und zeigt die Meldung rot für error
und critical
Level -Protokollmeldungen.
from colorlog import ColoredFormatter
formatter = ColoredFormatter (
"%(log_color)s%(levelname)-8s%(reset)s %(message_log_color)s%(message)s" ,
secondary_log_colors = {
'message' : {
'ERROR' : 'red' ,
'CRITICAL' : 'red'
}
}
)
dictConfig
logging . config . dictConfig ({
'formatters' : {
'colored' : {
'()' : 'colorlog.ColoredFormatter' ,
'format' : "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s"
}
}
})
Ein vollständiges Beispiel -Wörterbuch finden Sie in tests/test_colorlog.py
.
fileConfig
...
[formatters]
keys =color
[formatter_color]
class =colorlog.ColoredFormatter
format =%(log_color)s%(levelname)-8s%(reset)s %(bg_blue)s[%(name)s]%(reset)s %(message)s from fileConfig
datefmt =%m-%d %H:%M:%S
Anschließend wird eine Instanz von farbigformatischen Erstellungen von Handlern verwendet, die für die Verwendung des color
konfiguriert sind.
Eine vollständige Beispielkonfiguration finden Sie in tests/test_config.ini
.
ColoredFormatter funktioniert mit benutzerdefinierten Protokollpegeln, die mit logging.addLevelName
hinzugefügt wurden.
import logging , colorlog
TRACE = 5
logging . addLevelName ( TRACE , 'TRACE' )
formatter = colorlog . ColoredFormatter ( log_colors = { 'TRACE' : 'yellow' })
handler = logging . StreamHandler ()
handler . setFormatter ( formatter )
logger = logging . getLogger ( 'example' )
logger . addHandler ( handler )
logger . setLevel ( 'TRACE' )
logger . log ( TRACE , 'a message using a custom level' )
Tests ähnlich den obigen Beispielen finden Sie in tests/test_colorlog.py
.
Colorlog befindet sich im Wartungsmodus. Ich versuche sicherzustellen, dass Bugfixes veröffentlicht werden, aber die Kompatibilität mit Python 2.6+ und Python 3+ macht dies zu einer schwierigen Codebasis, um Funktionen hinzuzufügen. Alle Änderungen, die die Kompatibilität für vorhandene Benutzer rückwärts brechen könnten, werden nicht berücksichtigt.
Es gibt einige modernere Bibliotheken zur Verbesserung der Python -Protokollierung, die Sie möglicherweise nützlich finden.
GitHub bietet eine Liste von Projekten, die vom Colorlog abhängen.
Einige frühe Anwender umfassten Errbot, Pythran und Zenlog.
Copyright (c) 2012-2021 Sam Clements [email protected]
Die Erlaubnis wird hiermit kostenlos an eine Person erteilt, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien ("Software") erhält, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte zu verwenden, zu kopieren, zu modifizieren, zu verschmelzen, verschmelzen , veröffentlichen, vertreiben, unterlizenzieren und/oder Kopien der Software verkaufen und Personen, denen die Software dazu bereitgestellt wird, unter den folgenden Bedingungen ermöglicht:
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall haftet die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen, sei es in einer Vertragsklage, unerlaubter Handlung oder anderweitig, aus oder im Zusammenhang mit der Software oder anderen Geschäften in der SOFTWARE.