544 Stimmen

Wie kann ich die Python-Logging-Ausgabe einfärben?

Vor einiger Zeit sah ich eine Mono-Anwendung mit farbiger Ausgabe, vermutlich aufgrund des Protokollsystems (da alle Meldungen standardisiert waren).

Jetzt hat Python die logging Modul, mit dem Sie eine Vielzahl von Optionen zur Anpassung der Ausgabe angeben können. Ich stelle mir vor, dass etwas Ähnliches auch mit Python möglich wäre, aber ich kann nirgendwo herausfinden, wie man das macht.

Gibt es eine Möglichkeit, die Python logging Modulausgabe in Farbe?

Ich möchte z. B. Fehler in rot, Fehlermeldungen in blau oder gelb usw.

Natürlich würde dies wahrscheinlich ein kompatibles Terminal erfordern (die meisten modernen Terminals sind kompatibel); aber ich könnte auf die ursprüngliche logging Ausgabe, wenn Farbe nicht unterstützt wird.

Haben Sie eine Idee, wie ich mit dem Logging-Modul eine farbige Ausgabe erhalten kann?

0voto

yucer Punkte 3621

Nur eine andere Lösung, mit den Farben von ZetaSyanthis:

def config_log(log_level):

    def set_color(level, code):
        level_fmt = "\033[1;" + str(code) + "m%s\033[1;0m" 
        logging.addLevelName( level, level_fmt % logging.getLevelName(level) )

    std_stream = sys.stdout
    isatty = getattr(std_stream, 'isatty', None)
    if isatty and isatty():
        levels = [logging.DEBUG, logging.CRITICAL, logging.WARNING, logging.ERROR]
        for idx, level in enumerate(levels):
            set_color(level, 30 + idx )
        set_color(logging.DEBUG, 0)
    logging.basicConfig(stream=std_stream, level=log_level)

rufen Sie es einmal von Ihrem __main__ Funktion. Ich habe dort so etwas wie dies:

options, arguments = p.parse_args()
log_level = logging.DEBUG if options.verbose else logging.WARNING
config_log(log_level)

wird auch überprüft, ob es sich bei der Ausgabe um eine Konsole handelt, andernfalls werden keine Farben verwendet.

0voto

vey Punkte 58

Die einfachste Lösung ist wahrscheinlich Colorama.

Installieren Sie Colorama auf Ihrem Computer:

pip install colorama

Fügen Sie es dann in Ihr Python-Programm ein:

import colorama
print(Fore.GREEN + "test123")

Wenn Sie Dinge mehrfarbig gestalten müssen, verwenden Sie YAChalk .

Installieren Sie YAChalk auf Ihrem Computer:

pip install yachalk

Fügen Sie es zu Ihrem Python-Programm hinzu:

from yachalk import chalk
print(chalk.blue("This is blue and {chalk.red("this is red")})

0voto

WebMaster Punkte 107

Utilisez pyfancy .

Beispiel:

print(pyfancy.RED + "Hello Red!" + pyfancy.END)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X