| | """ |
| | 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) |
| |
|