支持不同字段高亮显示的 Formatter,仅限控制台输出。
| 25 | } |
| 26 | |
| 27 | class ColorFormatter(logging.Formatter): |
| 28 | """ |
| 29 | 支持不同字段高亮显示的 Formatter,仅限控制台输出。 |
| 30 | """ |
| 31 | def format(self, record): |
| 32 | level_name = record.levelname |
| 33 | level_color = COLOR_MAP.get(level_name, "") |
| 34 | reset = COLOR_MAP["RESET"] |
| 35 | |
| 36 | # 格式化各个字段 |
| 37 | asctime = self.formatTime(record, self.datefmt) |
| 38 | levelname = record.levelname |
| 39 | name = record.name |
| 40 | filename = record.filename |
| 41 | lineno = record.lineno |
| 42 | message = record.getMessage() |
| 43 | |
| 44 | # 组合带颜色的输出 - 每个字段不同颜色 |
| 45 | formatted = ( |
| 46 | f"{FIELD_COLORS['time']}{asctime}{reset} | " |
| 47 | f"{level_color}{levelname:<8}{reset} | " |
| 48 | f"{FIELD_COLORS['name']}{name}{reset} | " |
| 49 | f"{FIELD_COLORS['location']}{filename}:{lineno}{reset} | " |
| 50 | f"{level_color}{message}{reset}" # 消息使用级别颜色 |
| 51 | ) |
| 52 | |
| 53 | return formatted |
| 54 | |
| 55 | def _create_handler(): |
| 56 | """创建控制台和文件的日志处理器。""" |