You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.2 KiB
59 lines
1.2 KiB
# 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
|