# logbus/publisher.py import logging logger = logging.getLogger("logbus") def log(message: str): """ Dumb logger: - skip lege messages - stuur message 1:1 door - geen prefixes - geen mutaties """ if not message or not message.strip(): return # console logger.warning(message) # UI-echo try: from scraper.ui_log import push_ui push_ui(message) except Exception: pass # ============================================================ # Delta-based log retrieval using Redis indexes # ============================================================ def get_ui_logs_delta(last_index: int): """ Returns (new_lines, total_count) Only returns log lines AFTER last_index. Example: last_index = 10 → returns logs with Redis indexes 11..end """ # Determine total lines in buffer total = r.llen(UI_LOG_KEY) if total == 0: return [], 0 # First load OR index invalid → send entire buffer if last_index < 0 or last_index >= total: logs = r.lrange(UI_LOG_KEY, 0, -1) return logs, total # Only new lines: new_lines = r.lrange(UI_LOG_KEY, last_index + 1, -1) return new_lines, total