feat: log line preprocessing (ts strip + router/child classify)

This commit is contained in:
Vlad Doloman
2026-06-22 18:41:22 +03:00
parent 206c913a9f
commit ecfd759d7f
2 changed files with 73 additions and 0 deletions

26
log_parser.py Normal file
View File

@@ -0,0 +1,26 @@
import re
import json
from dataclasses import dataclass, field, asdict
from datetime import datetime
from typing import Optional
# ── Preprocessing ────────────────────────────────────────────────────────────
_TS_RE = re.compile(r'^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\]\s*')
_CHILD_RE = re.compile(r'^\[(\d+)\]\s*')
def strip_ts(line: str) -> str:
"""Remove optional `ts`-injected timestamp prefix from a log line."""
return _TS_RE.sub('', line.strip())
def classify_line(line: str) -> tuple[str, Optional[int], str]:
"""
Return (kind, port, content) where kind is 'router' or 'child'.
`line` must already have the ts prefix stripped.
"""
m = _CHILD_RE.match(line)
if m:
return ('child', int(m.group(1)), line[m.end():])
return ('router', None, line)