Spaces:
Runtime error
Runtime error
import logging | |
import os | |
from pathlib import Path | |
from app.core.config import APP_DATA_ROOT_DIR, APP_NAME | |
def configure_logging(): | |
""" | |
Configures application-wide logging to both console and a file. | |
The log file is placed in the application's data directory. | |
""" | |
log_dir = APP_DATA_ROOT_DIR / "logs" | |
log_dir.mkdir(parents=True, exist_ok=True) # Ensure the log directory exists | |
log_file_path = log_dir / f"{APP_NAME.lower()}.log" | |
# Define a custom formatter | |
formatter = logging.Formatter( | |
"%(asctime)s - %(name)s - %(levelname)s - %(message)s" | |
) | |
# Console handler | |
console_handler = logging.StreamHandler() | |
console_handler.setFormatter(formatter) | |
console_handler.setLevel(logging.INFO) # Default console level | |
# File handler | |
file_handler = logging.FileHandler(log_file_path) | |
file_handler.setFormatter(formatter) | |
file_handler.setLevel(logging.INFO) # Default file level | |
# Get the root logger | |
root_logger = logging.getLogger() | |
root_logger.setLevel(logging.INFO) # Overall minimum logging level | |
# Clear existing handlers to prevent duplicate logs if called multiple times | |
if root_logger.hasHandlers(): | |
root_logger.handlers.clear() | |
root_logger.addHandler(console_handler) | |
root_logger.addHandler(file_handler) | |
# Set specific log levels for libraries if needed (e.g., to reduce verbosity) | |
logging.getLogger("uvicorn").setLevel(logging.WARNING) | |
logging.getLogger("uvicorn.access").setLevel(logging.WARNING) | |
logging.getLogger("huggingface_hub").setLevel(logging.WARNING) | |
logging.getLogger("transformers").setLevel(logging.WARNING) | |
logging.getLogger("sentence_transformers").setLevel(logging.WARNING) | |
logging.getLogger("nltk").setLevel(logging.WARNING) | |
logging.getLogger("urllib3").setLevel(logging.WARNING) | |
logging.getLogger("asyncio").setLevel(logging.WARNING) # Reduce asyncio verbosity | |
logger = logging.getLogger(f"{APP_NAME}.core.logging") | |
logger.info(f"Logging configured. Logs are saved to: {log_file_path}") |