Enhanced logging system for build process
| 97 | pass |
| 98 | |
| 99 | class BuildLogger: |
| 100 | """Enhanced logging system for build process""" |
| 101 | |
| 102 | def __init__(self): |
| 103 | self.logger = logging.getLogger(__name__) |
| 104 | self.step_counter = 0 |
| 105 | self.start_time = time.time() |
| 106 | |
| 107 | def step(self, step_name: str) -> None: |
| 108 | """Log a build step""" |
| 109 | self.step_counter += 1 |
| 110 | elapsed = time.time() - self.start_time |
| 111 | separator = "=" * 80 |
| 112 | message = f"STEP {self.step_counter}: {step_name} (Elapsed: {elapsed:.2f}s)" |
| 113 | # 清理消息中的特殊字符 |
| 114 | clean_message = clean_text(message) |
| 115 | clean_separator = clean_text(separator) |
| 116 | self.logger.info(f"\n{clean_separator}\n{clean_message}\n{clean_separator}") |
| 117 | print(f"\n{clean_separator}") |
| 118 | print(clean_message) |
| 119 | print(clean_separator) |
| 120 | |
| 121 | def success(self, message: str) -> None: |
| 122 | """Log success message""" |
| 123 | clean_message = clean_text(message) |
| 124 | self.logger.info(f"SUCCESS: {clean_message}") |
| 125 | print(f"\033[92m[SUCCESS]\033[0m {clean_message}") |
| 126 | |
| 127 | def error(self, message: str) -> None: |
| 128 | """Log error message""" |
| 129 | clean_message = clean_text(message) |
| 130 | self.logger.error(f"ERROR: {clean_message}") |
| 131 | print(f"\033[91m[ERROR]\033[0m {clean_message}") |
| 132 | |
| 133 | def info(self, message: str) -> None: |
| 134 | """Log info message""" |
| 135 | clean_message = clean_text(message) |
| 136 | self.logger.info(f"INFO: {clean_message}") |
| 137 | print(f"→ INFO: {clean_message}") |
| 138 | |
| 139 | def warning(self, message: str) -> None: |
| 140 | """Log warning message""" |
| 141 | clean_message = clean_text(message) |
| 142 | self.logger.warning(f"WARNING: {clean_message}") |
| 143 | print(f"\033[93m[WARNING]\033[0m {clean_message}") |
| 144 | |
| 145 | # Global logger instance |
| 146 | logger = BuildLogger() |