smart-chatbot-api / app /utils /test_formatter.py
GitHub Actions
Deploy from GitHub Actions (2026-03-03 04:20 UTC)
c4d486b
import logging
# Example 1: WITHOUT __init__ (This will fail!)
class BrokenFormatter(logging.Formatter):
ANSI_COLORS = {
"DEBUG": "\033[36m",
"INFO": "\033[32m",
"RESET": "\033[0m",
}
def format(self, record):
if record.levelname in self.ANSI_COLORS:
record.levelname = f"{self.ANSI_COLORS[record.levelname]}{record.levelname}{self.ANSI_COLORS['RESET']}"
return super().format(record)
# Example 2: WITH __init__ (This works correctly)
class WorkingFormatter(logging.Formatter):
ANSI_COLORS = {
"DEBUG": "\033[36m",
"INFO": "\033[32m",
"RESET": "\033[0m",
}
def __init__(self, fmt=None, datefmt=None):
super().__init__(fmt, datefmt)
def format(self, record):
if record.levelname in self.ANSI_COLORS:
record.levelname = f"{self.ANSI_COLORS[record.levelname]}{record.levelname}{self.ANSI_COLORS['RESET']}"
return super().format(record)
# Let's test both:
if __name__ == "__main__":
try:
# This will raise TypeError because BrokenFormatter doesn't handle the format string
broken = BrokenFormatter("%(asctime)s - %(levelname)s - %(message)s")
print("BrokenFormatter worked (unexpected!)")
except TypeError as e:
print(f"BrokenFormatter failed as expected: {e}")
try:
# This will work correctly because WorkingFormatter properly handles the format string
working = WorkingFormatter("%(asctime)s - %(levelname)s - %(message)s")
print("WorkingFormatter worked as expected")
except TypeError as e:
print(f"WorkingFormatter failed (unexpected!): {e}")