1. 程式人生 > >【譯】:python中的colorlog庫

【譯】:python中的colorlog庫

mes zh-cn 描述 終端 font file 直接 config key

本文翻譯自colorlog官方文檔

一. 描述

colorlog.ColoredFormatter是一個Python logging模塊的格式化,用於在終端輸出日誌的顏色

二. 安裝

pip install colorlog

三. 用法

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:在python3.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}:粗體/明亮的顏色

  • reset:清除所有的格式(包括前景色和背景色)

可用的顏色名字是: black, red, green, yellow, blue, purple, cyan and white

四. 實例

1. ColoredFormatter用法

以下代碼使用每個參數的默認值創建一個用於logging設置的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=%
)

2. secondary_log_colors的使用

輔助日誌顏色是一種根據日誌級別選擇多種顏色的方法。 secondary_log_colors中的每個鍵都添加了一個可以在格式化字符串中使用的屬性(消息變為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
        }
    }
)

3. dictConfig的使用

logging.config.dictConfig({
    formatters: {
        colored: {
            (): colorlog.ColoredFormatter,
            format: "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s"
        }
    },

    ...
})

一個完整的例子參考tests/test_colorlog.py

4. fileConfig的使用

[loggers]
keys=root

[logger_root]
handlers=stream
level=DEBUG

[formatters]
keys=color

[formatter_color]
class=colorlog.ColoredFormatter
format=%(log_color)s%(levelname)s:%(name)s:%(message)s:test_config.ini
datefmt=%H:%M:%S

[handlers]
keys=stream

[handler_stream]
class=StreamHandler
formatter=color
args=()

配置了顏色格式的任何渠道都可以使用這些參數構造的ColoredFormatter實例

一個完整的例子請參考test/test_config.ini

5. 自定義日誌級別的使用

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)

【譯】:python中的colorlog庫