| """ |
| MediGenius — core/logging_config.py |
| Rotating file + console logging setup. |
| """ |
|
|
| import logging |
| import os |
| import sys |
| from datetime import datetime |
| from logging.handlers import RotatingFileHandler |
|
|
| from app.core.config import LOG_DIR |
|
|
|
|
| def setup_logging(log_dir: str = LOG_DIR) -> logging.Logger: |
| """Setup rotating file + console logging. Returns the 'medigenius' logger.""" |
| _logger = logging.getLogger("medigenius") |
|
|
| |
| if _logger.handlers: |
| return _logger |
|
|
| |
| is_testing = "pytest" in sys.modules or os.getenv("TESTING") == "1" |
|
|
| if is_testing: |
| _logger.setLevel(logging.DEBUG) |
| else: |
| _logger.setLevel(logging.INFO) |
| if not os.path.exists(log_dir): |
| os.makedirs(log_dir) |
|
|
| log_file = os.path.join( |
| log_dir, f"medigenius_{datetime.now().strftime('%Y%m%d')}.log" |
| ) |
| file_handler = RotatingFileHandler(log_file, maxBytes=10 * 1024 * 1024, backupCount=5) |
| file_handler.setLevel(logging.INFO) |
| file_handler.setFormatter(logging.Formatter( |
| "%(asctime)s - %(name)s - %(levelname)s - %(message)s", |
| datefmt="%Y-%m-%d %H:%M:%S", |
| )) |
| _logger.addHandler(file_handler) |
|
|
| console_handler = logging.StreamHandler() |
| console_handler.setLevel(logging.INFO) |
|
|
| formatter = logging.Formatter( |
| "%(asctime)s - %(name)s - %(levelname)s - %(message)s", |
| datefmt="%Y-%m-%d %H:%M:%S", |
| ) |
| console_handler.setFormatter(formatter) |
| _logger.addHandler(console_handler) |
|
|
| return _logger |
|
|
|
|
| |
| logger = setup_logging() |
|
|