import logging from typing import Optional import sys def get_logger(name: str, level: int = logging.INFO) -> logging.Logger: """Get a logger with standard configuration.""" logger = logging.getLogger(name) if not logger.handlers: handler = logging.StreamHandler(sys.stdout) formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(level) return logger def setup_logger( name: str = "codechunk", level: int = logging.INFO, log_file: Optional[str] = None ) -> logging.Logger: """Setup logger with file and console handlers.""" logger = logging.getLogger(name) logger.setLevel(level) if logger.handlers: return logger formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) logger.addHandler(console_handler) if log_file: file_handler = logging.FileHandler(log_file) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger