欢迎访问宙启技术站
智能推送

使用colorlogStreamHandler()在Python中实现个性化的终端日志输出样式

发布时间:2023-12-28 01:06:45

colorlog是一个第三方模块,可以为Python的日志输出添加颜色和格式化样式。colorlog提供了一个colorlogStreamHandler类,可以轻松地创建个性化的终端日志输出样式。

下面是一个使用colorlogStreamHandler的示例:

import logging
from colorlog import ColoredFormatter, StreamHandler

# 配置日志记录器
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)

# 创建一个 StreamHandler,将日志输出到终端
handler = StreamHandler()
handler.setLevel(logging.DEBUG)

# 设置日志输出样式
formatter = ColoredFormatter(
    # 自定义颜色
    "%(log_color)s%(asctime)s [%(levelname)s] %(message)s",
    datefmt='%Y-%m-%d %H:%M:%S',
    log_colors={
        'DEBUG':    'cyan',
        'INFO':     'green',
        'WARNING':  'yellow',
        'ERROR':    'red',
        'CRITICAL': 'bold_red',
    }
)
handler.setFormatter(formatter)

# 添加 StreamHandler 到日志记录器
logger.addHandler(handler)

# 输出不同级别的日志信息
logger.debug("This is a debug message")
logger.info("This is an info message")
logger.warning("This is a warning message")
logger.error("This is an error message")
logger.critical("This is a critical message")

上述代码将为终端输出的日志添加了颜色和自定义格式样式,输出示例如下:

2022-01-01 12:34:56 [DEBUG] This is a debug message
2022-01-01 12:34:56 [INFO] This is an info message
2022-01-01 12:34:56 [WARNING] This is a warning message
2022-01-01 12:34:56 [ERROR] This is an error message
2022-01-01 12:34:56 [CRITICAL] This is a critical message

在这个示例中,我们首先导入了必要的模块,包括logging、ColoredFormatter和StreamHandler。然后,我们配置了日志记录器和StreamHandler,并设置了日志输出的级别和样式。

在ColoredFormatter的构造函数中,我们指定了要使用的格式和颜色。%(log_color)s将根据日志的级别自动使用不同的颜色。我们还可以通过设置log_colors参数来自定义每个日志级别的颜色。

最后,我们将StreamHandler添加到日志记录器中,并通过logger.debug、logger.info等方法输出不同级别的日志信息。

这只是colorlog模块的一个简单示例,你可以根据自己的需要自定义更多的日志样式和颜色。colorlog还支持其他功能,如日志文件的输出,可以根据官方文档进行更多深入的学习和实践。