python logging终端颜色模块colorlog的使用

前言

看了很多框架,使用的都是用第三方的脚本ansistrm.py

用起来确实不错,但是还是觉得colorlog更方便。

安装

pip install colorlog

简单介绍

基本用法

from colorlog import ColoredFormatter

ColoredFormatter类带着一些参数:

  • format:用于输出日志的格式化字符串(必需)

  • datefmt:一个传递给基类的可选的日期格式。见logging.Formatter

  • reset:隐性的添加一个颜色重置代码到消息输出,除非输出已经结束。默认为True

  • log_colors:记录级别名称到颜色名称的一个映射。可以在colorlog.default_log_colors或下面的例子中找到默认值

  • secondary_log_colors:颜色名称到log_colors样式映射的映射,可以在格式化字符串中使用其定义的其他颜色。 请参考下面的示例

  • style:在python3.2以以上可用。见logging.Formatter

在为日志级别配置颜色时,可以使用逗号连接多个转义码(但不能直接在格式字符串中使用)。 例如,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

具体的介绍可以参考:http://www.mamicode.com/info-detail-2434665.html

例子

from colorlog import ColoredFormatter
import logging

LOG_LEVEL = logging.DEBUG

LOGFORMAT = "  %(log_color)s%(asctime)s  %(levelname)-8s%(reset)s | %(log_color)s%(message)s%(reset)s"
logging.root.setLevel(LOG_LEVEL)
formatter = ColoredFormatter(LOGFORMAT)

stream = logging.StreamHandler()
stream.setLevel(LOG_LEVEL)
stream.setFormatter(formatter)

log = logging.getLogger('pythonConfig')
log.setLevel(LOG_LEVEL)
log.addHandler(stream)

log.debug("This is debug.")
log.info("This is info.")
log.warning("This is warning.")
log.error("This is error.")
log.critical("This is critical.")

输出如下:

可以看到的是自动就有颜色输出,当然你也可以自己设定颜色,可参照下面例子看看参数设置

自定义级别

from colorlog import ColoredFormatter
import logging

class LoggingLevel:
    SYSINFO = 9
    SUCCESS = 8
    ERROR = 7
    WARNING = 6


logging.addLevelName(LoggingLevel.SYSINFO, "*")
logging.addLevelName(LoggingLevel.SUCCESS, "+")
logging.addLevelName(LoggingLevel.ERROR, "-")
logging.addLevelName(LoggingLevel.WARNING, "!")

LOGGER = logging.getLogger("NosaferLog")

formatter = ColoredFormatter(
    "%(log_color)s[%(asctime)s] [%(levelname)s] %(message)s",
    datefmt="%H:%M:%S",
    log_colors={
        '*':    'cyan',
        '+':     'red',
        '-':  'green',
        '!':    'yellow',
    },
     secondary_log_colors={},
     style='%'
)
LOGGER_HANDLER = logging.StreamHandler()
LOGGER_HANDLER.setFormatter(formatter)
LOGGER.addHandler(LOGGER_HANDLER)
LOGGER.setLevel(LoggingLevel.WARNING)

LOGGER.log(LoggingLevel.SUCCESS, 'Success')
LOGGER.log(LoggingLevel.SYSINFO, 'SYSINFO')
LOGGER.log(LoggingLevel.ERROR, 'ERROR')
LOGGER.log(LoggingLevel.WARNING, 'WARNING')

输出如下:

1 个赞