| """ |
| Logging configuration for the application. |
| """ |
|
|
| import logging |
| import sys |
| from typing import Optional |
|
|
| from app.core.config import settings |
|
|
|
|
| def setup_logging(level: Optional[str] = None) -> logging.Logger: |
| """ |
| Set up application logging. |
| |
| Args: |
| level: Log level string (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| |
| Returns: |
| Configured logger instance |
| """ |
| log_level = level or settings.LOG_LEVEL |
| |
| |
| formatter = logging.Formatter( |
| fmt="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s", |
| datefmt="%Y-%m-%d %H:%M:%S" |
| ) |
| |
| |
| root_logger = logging.getLogger() |
| root_logger.setLevel(getattr(logging, log_level.upper(), logging.INFO)) |
| |
| |
| for handler in root_logger.handlers[:]: |
| root_logger.removeHandler(handler) |
| |
| |
| stdout_handler = logging.StreamHandler(sys.stdout) |
| stdout_handler.setFormatter(formatter) |
| root_logger.addHandler(stdout_handler) |
| |
| |
| logging.getLogger("uvicorn").setLevel(logging.WARNING) |
| logging.getLogger("httpx").setLevel(logging.WARNING) |
| logging.getLogger("huggingface_hub").setLevel(logging.WARNING) |
| |
| return root_logger |
|
|
|
|
| def get_logger(name: str) -> logging.Logger: |
| """ |
| Get a named logger instance. |
| |
| Args: |
| name: Logger name (typically __name__) |
| |
| Returns: |
| Logger instance |
| """ |
| return logging.getLogger(name) |
|
|