| import logging |
| import os |
| from datetime import datetime |
| from src.utils.config import config |
|
|
|
|
| def setup_logging(): |
| """Set up logging configuration.""" |
| |
| os.makedirs(os.path.dirname(config.LOG_FILE), exist_ok=True) |
|
|
| |
| logging.basicConfig( |
| level=getattr(logging, config.LOG_LEVEL), |
| format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", |
| handlers=[logging.FileHandler(config.LOG_FILE), logging.StreamHandler()], |
| ) |
|
|
| return logging.getLogger(__name__) |
|
|
|
|
| def log_document_upload(filename: str, file_size: int) -> None: |
| """Log document upload event.""" |
| logger = logging.getLogger(__name__) |
| logger.info(f"Document uploaded: {filename} ({file_size} bytes)") |
|
|
|
|
| def log_analysis_start(document_id: str) -> None: |
| """Log analysis start event.""" |
| logger = logging.getLogger(__name__) |
| logger.info(f"Starting analysis for document: {document_id}") |
|
|
|
|
| def log_analysis_complete(document_id: str, processing_time: float) -> None: |
| """Log analysis completion event.""" |
| logger = logging.getLogger(__name__) |
| logger.info( |
| f"Analysis completed for document: {document_id} in {processing_time:.2f}s" |
| ) |
|
|
|
|
| def log_error(error_message: str, document_id: str = None) -> None: |
| """Log error event.""" |
| logger = logging.getLogger(__name__) |
| if document_id: |
| logger.error(f"Error processing document {document_id}: {error_message}") |
| else: |
| logger.error(f"Application error: {error_message}") |
|
|
|
|
| def log_qa_interaction(document_id: str, question: str) -> None: |
| """Log Q&A interaction.""" |
| logger = logging.getLogger(__name__) |
| logger.info(f"Q&A interaction for document {document_id}: {question[:100]}...") |
|
|
|
|
| |
| setup_logging() |
|
|