File size: 1,656 Bytes
f1667dd c1a3d27 f1667dd c1a3d27 f1667dd c1a3d27 f1667dd c1a3d27 f1667dd c1a3d27 f1667dd c1a3d27 f1667dd c1a3d27 f1667dd c1a3d27 f1667dd 18f5759 941f5e0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import logging
import sys
from datetime import datetime
class TimestampFormatter(logging.Formatter):
"""Custom formatter that matches the existing timestamp format used in print statements."""
def format(self, record):
# Create timestamp in the same format as existing print statements
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# Format the message with timestamp prefix
if record.levelno == logging.WARNING:
return f"WARNING: {record.getMessage()}"
elif record.levelno == logging.ERROR:
return f"Error {record.getMessage()}"
else:
return f"[{timestamp}] {record.getMessage()}"
def setup_logger(name="tcid", level=logging.INFO):
"""Set up logger with custom timestamp formatting to match existing print format."""
logger = logging.getLogger(name)
# Avoid adding multiple handlers if logger already exists
if logger.handlers:
return logger
logger.setLevel(level)
# Create console handler
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(level)
# Set custom formatter
formatter = TimestampFormatter()
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
# Create default logger instance
logger = setup_logger()
def generate_underlined_line(text: str) -> str:
return text + "\n" + "─" * len(text)
# Shared color scheme across all visualization modules
COLORS = {
'passed': '#4CAF50',
'failed': '#E53E3E',
'skipped': '#FFD54F',
'error': '#8B0000',
'empty': '#5B5B5B',
'amd': '#ED1C24',
'nvidia': '#76B900'
}
|