Expertus metuit
Цветной вывод логов в консоль из питоновской программы
Опубликовано 2014-07-16 в 10:28

В питоне есть модуль logging, через который приложение может выводить логи, например, в терминал при отладке программы. По умолчанию вывод выглядит просто как сплошной поток текста, однако его можно раскрасить, чтобы разные типы сообщений (DEBUG, INFO и т.п.) печатались разными цветами. Для этого нужно сконфигурировать форматер логов и протащить его в программу, сделать это можно разными способами в ini-файле проекта или внутри самой программы.

В сети много рецептов форматеров, однако можно просто поставить готовый модуль, например, colorlog. Ниже я расскажу о разных способах его подключения к проекту и конфигурации.

Ставится модуль традиционно: pip install colorlog или easy_install colorlog, работает во втором и третьем питоне.

Простейший способ подключить к проекту — это добавить форматер в ini-конфиге. Для этого добавьте в секцию [formatters] новый ключ color:

[formatters]
keys = generic, color

А затем добавьте новую секцию [formatter_color]:

[formatter_color]
class = colorlog.ColoredFormatter
format = %(log_color)s%(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s%(reset)s

Теперь можно указывать этот форматер (color) вместо стандартного generic:

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = color

Теперь при запуске проекта все логи будут раскрашены.

К сожалению, при такой конфигурации нельзя выставить свои цвета для разных уровней логов, потому что эти данные нельзя выставить через ini. Выкрутиться можно разными способами, например, отнаследоваться в своём проекте от класса colorlog.ColoredFormatter и в конструкторе переопределить цвета, а затем указывать именно этот свой класс в конфиге форматера [formatter_color].

Комментарии

Текст комментария (допустимая разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com>) Посетители-анонимы, обратите внимение, что более чем одна гиперссылка в тексте (включая оную из поля «веб-сайт») приведёт к блокировке комментария для модерации. Зайдите на сайта с использованием аккаунта на twitter, например, чтобы посылать комментарии без этого ограничения.
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2024 Sergey Stolyarov | Работает на pyrengine