|
|
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): |
|
|
|
|
|
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') |
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
if logger.handlers: |
|
|
return logger |
|
|
|
|
|
logger.setLevel(level) |
|
|
|
|
|
|
|
|
handler = logging.StreamHandler(sys.stdout) |
|
|
handler.setLevel(level) |
|
|
|
|
|
|
|
|
formatter = TimestampFormatter() |
|
|
handler.setFormatter(formatter) |
|
|
|
|
|
logger.addHandler(handler) |
|
|
|
|
|
return logger |
|
|
|
|
|
|
|
|
|
|
|
logger = setup_logger() |
|
|
|
|
|
|
|
|
|
|
|
def generate_underlined_line(text: str) -> str: |
|
|
return text + "\n" + "β" * len(text) |
|
|
|