import logging import os import sys from logging.handlers import RotatingFileHandler # Create logs directory if it doesn't exist os.makedirs('logs', exist_ok=True) # Configure root logger logger = logging.getLogger() logger.setLevel(logging.INFO) # Clear any existing handlers for handler in logger.handlers[:]: logger.removeHandler(handler) # Create formatters formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Console handler console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) logger.addHandler(console_handler) # File handler file_handler = RotatingFileHandler( 'logs/app.log', maxBytes=5*1024*1024, # 5MB backupCount=3, encoding='utf-8' ) file_handler.setFormatter(formatter) logger.addHandler(file_handler) # Create a logger for the application logger = logging.getLogger("ClipQuery") logger.setLevel(logging.INFO) # Add a handler to capture logs in memory for the UI log_buffer = logging.handlers.MemoryHandler( capacity=1024*100, # Store up to 100KB of logs target=logging.StreamHandler(open('logs/app.log', 'a', encoding='utf-8')) ) log_buffer.setFormatter(formatter) logger.addHandler(log_buffer) def get_logs(): """Get the most recent logs from the buffer.""" log_file = os.path.join(os.path.dirname(__file__), 'logs/app.log') if os.path.exists(log_file): with open(log_file, 'r', encoding='utf-8') as f: return f.read() return "No log file found."