如何修改python logging输出点日志字体颜色
时间: 2023-12-21 15:12:59 浏览: 225
idea 控制台log日志颜色修改
3星 · 编辑精心推荐
可以通过给 `logging` 模块的输出添加颜色来更好地区分不同级别的日志。具体方法是创建一个自定义的 `Formatter` 类,并在其中添加 ANSI 转义序列来修改文本颜色。
以下是一个示例代码:
```python
import logging
class ColoredFormatter(logging.Formatter):
"""
自定义日志格式,添加颜色
"""
def format(self, record):
if record.levelno == logging.DEBUG:
# 绿色字体
color_start = '\033[32m'
elif record.levelno == logging.INFO:
# 默认字体颜色
color_start = ''
elif record.levelno == logging.WARNING:
# 黄色字体
color_start = '\033[33m'
elif record.levelno == logging.ERROR:
# 红色字体
color_start = '\033[31m'
elif record.levelno == logging.CRITICAL:
# 紫色字体
color_start = '\033[35m'
else:
color_start = ''
color_end = '\033[0m'
self._style._fmt = color_start + self._style._fmt + color_end
return super().format(record)
# 创建 logger
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# 创建 StreamHandler,并添加到 logger 中
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
# 创建 Formatter,并添加到 handler 中
formatter = ColoredFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# 添加 handler 到 logger 中
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')
```
在这个例子中,我们创建了一个自定义的 `Formatter` 类 `ColoredFormatter`,并在其中根据不同的日志级别添加了不同的颜色。然后将这个 `Formatter` 添加到 `StreamHandler` 中,并将其添加到 logger 中,从而实现了对输出日志的颜色控制。
注意,为了保证每个日志输出的颜色都是正确的,我们每次都需要在 `format` 方法中重新设置 `_style._fmt`。如果不这么做,可能会出现某些日志输出颜色不正确的情况。
阅读全文