將顏色添加到Python的logging
模塊的輸出中。
Colorlog當前需要Python 3.6或更高。舊版本(低於5.xx)支持Python 2.6及以上。
在Windows上使用Colorlog時,Colorama作為所需的依賴性和初始化。
該圖書館已經過去了十多年,並在其一生中支持了廣泛的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}
:大膽/明亮的顏色。thin
, thin_{color}
, fg_thin_{color}
:薄色(終端依賴)。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
然後,使用這些參數創建的有色形式的實例將由配置為使用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。
版權(c)2012-2021 sam clements [email protected]
特此免費授予任何獲得此軟件副本和相關文檔文件(“軟件”)的人,以無限制處理該軟件,包括無限制,使用,複製,修改,合併的權利,出版,分發,分佈和/或出售軟件的副本,並允許提供該軟件的人,但要遵守以下條件:
上述版權通知和此許可通知應包含在軟件的所有副本或大量部分中。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性和非侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.