zoukankan      html  css  js  c++  java
  • 【译】:python中的colorlog库

    本文翻译自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')
  • 相关阅读:
    HTML元素盒模型
    对git使用的初步总结
    在windows上,使用虚拟机安装苹果操作系统
    C++多例模式下对Instance的使用
    C++中的Inline函数的使用
    gitbash安装与使用
    C++中的Inline函数
    git bash下添加忽略文件列表
    C++数据类型(data type)介绍
    RFID会议签到系统总结(六)――系统配置(下)
  • 原文地址:https://www.cnblogs.com/my_captain/p/9574057.html
Copyright © 2011-2022 走看看