c语言编程笔录

首页 >   > 笔记大全

笔记大全

如何为python日志输出着色 python改变输出颜色

更新时间:2023-10-20

Python实现控制台输出着色

在Python中,我们可以使用不同的颜色为控制台输出着色。控制台输出颜色是以ANSI转义序列为基础的。这些序列为控制台应用程序提供了一种方法来控制文本的样式和颜色。

1. 示例代码: 输出绿色文本

      
        # 在控制台输出绿色文本
        print("\033[32m" + "绿色文本" + "\033[0m")
      
    

这个示例代码使用ANSI转义序列,将文本颜色设置为绿色。代码中的 "\033[32m" 是设置颜色的动作码,代表着将文本设置为绿色。而 "\033[0m" 是动作码,用于重置文本样式,以免造成后续输出颜色结构混乱。

2. 示例代码: 输出黄色背景色的蓝色文本

      
        # 在控制台输出黄色背景色的蓝色文本
        print("\033[43m\033[34m" + "黄色背景色的蓝色文本" + "\033[0m")
      
    

此示例代码通过两个颜色代码(43和34)设置文本的背景和前景颜色。数字43代表黄色背景,34代表蓝色文本。最后,"\033[0m"被用来重置颜色。 注意:它们不能被交换或省略,以防止输出颜色再次混乱。

3. 实现一个Python日志类,支持不同的日志级别及日志颜色输出。

    
```python
import logging

class MyLogger:
    def __init__(self, level=logging.DEBUG):
        self.logger=logging.getLogger()
        self.logger.handlers=[]
        self.logger.setLevel(level)
        formatter=logging.Formatter('[%(asctime)s][%(levelname)s]:%(message)s')

        # 控制台 Console Handler,默认输出到控制台
        console_handler=logging.StreamHandler()
        console_handler.setLevel(level)
        console_handler.setFormatter(formatter)
        self.logger.addHandler(console_handler)
        
        # 文件 File Handler,输出到日志文件
        file_handler=logging.FileHandler("app.log", "a", encoding="utf-8")
        file_handler.setLevel(level)
        file_handler.setFormatter(formatter)
        self.logger.addHandler(file_handler)

    def debug(self, message):
        self.logger.debug("\033[1;32m%s\033[0m" % message)

    def info(self, message):
        self.logger.info("\033[1;34m%s\033[0m" % message)

    def warn(self, message):
        self.logger.warning("\033[1;33m%s\033[0m" % message)

    def error(self, message):
        self.logger.error("\033[1;31m%s\033[0m" % message)

    def critical(self, message):
        self.logger.critical("\033[1;35m%s\033[0m" % message)
    
  

示例代码中实现了一个MyLogger类,主要功能是将日志输出到控制台和日志文件中。它提供了5种不同的方法来输出不同级别的日志。 每个日志级别都具有不同的颜色,以便于区分。例如,debug级别输出为绿色,info级别输出为蓝色等。最终效果图如下: