Добавьте цвета к выводу модуля logging
Python.
Colorlog в настоящее время требует Python 3.6 или выше. Старые версии (ниже 5.xx) поддерживают Python 2.6 и выше.
Колорама включен в качестве необходимой зависимости и инициализируется при использовании Colorlog в Windows.
Эта библиотека старше десятилетия, и большую часть своей жизни поддерживает широкий набор версий Python, что затрудняло добавление новых функций. Colorlog 6 может сломаться назад, так что новые функции могут быть добавлены легче, но все же не могут принять все изменения или запросы функций. Colorlog 4 может принимать основные ошибки, но не следует считать активно поддерживаться и не будет принимать каких -либо серьезных изменений или новых функций.
Установите из PYPI с:
pip install colorlog
Несколько распределений Linux предоставляют официальные пакеты (Debian, Arch, Fedora, Gentoo, OpenSuse и Ubuntu), а другие имеют пакеты, предоставленные пользователями (порты BSD, 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 )
Класс ColoredFormatter
принимает несколько аргументов:
format
: строка формата, используемая для вывода сообщения (необходимо).datefmt
: необязательный формат даты, переданный в базовый класс. Смотрите logging.Formatter
.reset
: неявно добавляет код сброса цвета к выводу сообщения, если вывод уже не заканчивается одним. По умолчанию к True
.log_colors
: отображение имен уровней записи с именами цвета. По умолчанию можно найти в colorlog.default_log_colors
или приведенном ниже примере.secondary_log_colors
: отображение имен с помощью сопоставлений в стиле log_colors
, определяя дополнительные цвета, которые можно использовать в строках формата. Смотрите ниже пример.style
: доступен на Python 3.2 и выше. Смотрите logging.Formatter
.Коды побега цвета могут быть выбраны на основе уровня записей журнала, добавив параметры в строку формата:
log_color
: вернуть цвет, связанный с уровнем записей.<name>_log_color
: вернуть еще один цвет на основе уровня записей, если в форматере настроено вторичные цвета (см. secondary_log_colors
ниже). Несколько кодов побега могут использоваться одновременно, соединяя их с запятыми при настройке цвета для уровня журнала (но нельзя использовать непосредственно в строке формата). Например, black,bg_white
будет использовать коды побега для черного текста на белом фоне.
Следующие коды побега доступны для использования в строке формата:
{color}
, fg_{color}
, bg_{color}
: цвета переднего плана и фона.bold
, bold_{color}
, fg_bold_{color}
, bg_bold_{color}
: bold/яркие цвета.thin
, thin_{color}
, fg_thin_{color}
: thin Colors (терминал зависит от терминала).reset
: очистить все форматирование (как на переднем плане, так и на фоне).Доступные имена цвета:
black
red
green
yellow
blue
,purple
cyan
white
Вы также можете использовать «яркие» цвета. Это не стандартные коды ANSI, и поддержка их сильно варьируется в разных терминалах.
light_black
light_red
light_green
light_yellow
light_blue
light_purple
light_cyan
light_white
Следующий код создает ColoredFormatter
для использования в настройке журнала, используя значения по умолчанию для каждого аргумента.
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
Вторичные цвета журнала - это способ иметь более одного цвета, который выбран на основе уровня журнала. Каждый ключ в secondary_log_colors
добавляет атрибут, который можно использовать в строках формата ( message
становится message_log_color
), и имеет соответствующее значение, которое идентична в формате для аргумента log_colors
.
В следующем примере выделяется имя уровня с использованием цветов журнала по умолчанию и выделяет сообщение красным цветом для error
и сообщений журнала critical
уровня.
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"
}
}
})
Полный пример словаря можно найти в 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
Экземпляр ColoredFormatter, созданный с этими аргументами, будет затем использоваться любыми обработчиками, которые настроены для использования форматера color
.
Полный пример конфигурации можно найти в tests/test_config.ini
.
ColoredFormatter будет работать с пользовательскими уровнями журнала, добавленными с помощью logging.addLevelName
:
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/test_colorlog.py
.
Colorlog находится в режиме обслуживания. Я стараюсь убедиться, что настройки опубликованы, но совместимость с Python 2.6+ и Python 3+ делает эту кодовую базу для добавления функций. Любые изменения, которые могут сломаться назад, совместимость для существующих пользователей не будут рассмотрены.
Есть несколько более современных библиотек для улучшения ведения журнала Python, которые вы можете найти полезным.
GitHub предоставляет список проектов, которые зависят от Colorlog.
Некоторые ранние пользователи включали Errbot, Pythran и Zenlog.
Copyright (C) 2012-2021
Настоящее разрешение предоставляется бесплатно любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), для работы в программном обеспечении без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение , публиковать, распространять, сублиценс и/или продавать копии программного обеспечения и разрешить лицам, которым предоставлено программное обеспечение, при условии следующих условий:
Вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть включено во все копии или существенные части программного обеспечения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае не будут нести ответственность авторов или владельцев авторских прав за любые претензии, ущерб или другую ответственность, будь то в действии контракта, деликт или иным образом, возникающих из или в связи с программным обеспечением или использования или других сделок в ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.