|
1 | 1 | import logging |
2 | 2 | import sys |
3 | | -from datetime import datetime |
4 | 3 |
|
5 | 4 | from api.core.config import settings |
6 | 5 |
|
7 | 6 |
|
8 | | -class SimpleFormatter(logging.Formatter): |
9 | | - """Simple formatter with colored output for console.""" |
10 | | - |
11 | | - COLORS = { |
12 | | - "DEBUG": "\033[36m", # Cyan |
13 | | - "INFO": "\033[32m", # Green |
14 | | - "WARNING": "\033[33m", # Yellow |
15 | | - "ERROR": "\033[31m", # Red |
16 | | - "RESET": "\033[0m", # Reset |
17 | | - } |
18 | | - |
19 | | - def format(self, record: logging.LogRecord) -> str: |
20 | | - color = self.COLORS.get(record.levelname, "") |
21 | | - reset = self.COLORS["RESET"] |
22 | | - |
23 | | - # Format: [time] [level] [module:line] message |
24 | | - return ( |
25 | | - f"{color}[{datetime.now().strftime('%H:%M:%S')}] " |
26 | | - f"[{record.levelname}] [{record.name}:{record.lineno}] " |
27 | | - f"{record.getMessage()}{reset}" |
28 | | - ) |
29 | | - |
30 | | - |
31 | 7 | def setup_logging() -> None: |
32 | 8 | """Set up logging configuration.""" |
33 | | - # Create and configure console handler |
34 | | - console_handler = logging.StreamHandler(sys.stdout) |
35 | | - console_handler.setFormatter(SimpleFormatter()) |
36 | | - |
37 | | - # Configure root logger |
38 | | - root_logger = logging.getLogger() |
39 | | - root_logger.setLevel(logging.DEBUG if settings.DEBUG else logging.INFO) |
40 | | - root_logger.addHandler(console_handler) |
41 | | - |
42 | | - # Configure uvicorn loggers |
43 | | - for logger_name in ("uvicorn", "uvicorn.access", "uvicorn.error"): |
44 | | - logger = logging.getLogger(logger_name) |
45 | | - logger.handlers = [console_handler] |
| 9 | + format_string = "[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s" |
| 10 | + logging.basicConfig( |
| 11 | + level=logging.DEBUG if settings.DEBUG else logging.INFO, |
| 12 | + format=format_string, |
| 13 | + datefmt="%H:%M:%S", |
| 14 | + stream=sys.stdout, |
| 15 | + ) |
46 | 16 |
|
47 | 17 |
|
48 | 18 | def get_logger(name: str) -> logging.Logger: |
|
0 commit comments