【译】:python中的colorlog库

时间:2018-09-02 17:12:58   收藏:0   阅读:2106

本文翻译自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类带着一些参数:

可以向格式化字符串中添加参数,根据日志级别选择颜色转义码:

在为日志级别配置颜色时,可以使用逗号连接多个转义码(但不能直接在格式字符串中使用)。 例如,black,bg_white将在白色背景上使用转义码表示黑色文本

 

下面是格式化字符串中可用的:

可用的颜色名字是: 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)

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!