""" This module provides logging functionality for the application. """ import logging from datetime import datetime import os from typing import Optional def setup_logger(name: str = __name__, log_file: Optional[str] = None, level: int = logging.INFO) -> logging.Logger: """ Set up a logger with file and console handlers. Args: name: Logger name log_file: Optional log file path level: Logging level Returns: Configured logger """ # Create logger logger = logging.getLogger(name) logger.setLevel(level) # Remove any existing handlers for handler in logger.handlers[:]: logger.removeHandler(handler) # Create formatters console_formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) file_formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s' ) # Create console handler console_handler = logging.StreamHandler() console_handler.setFormatter(console_formatter) logger.addHandler(console_handler) # Create file handler if log_file specified if log_file: # Create logs directory if it doesn't exist os.makedirs(os.path.dirname(log_file), exist_ok=True) file_handler = logging.FileHandler(log_file) file_handler.setFormatter(file_formatter) logger.addHandler(file_handler) return logger # Create default logger logger = setup_logger( name="codette", log_file="logs/codette.log", level=logging.INFO )