| from __future__ import annotations |
| from pathlib import Path |
| import json |
| from datetime import datetime |
|
|
| class LocalLogger: |
| def __init__(self, log_file: Path): |
| self.log_file = log_file |
| self.log_file.parent.mkdir(parents=True, exist_ok=True) |
|
|
| def log(self, stage: str, level: str, message: str, **extra): |
| event = {"timestamp": datetime.utcnow().isoformat()+"Z", |
| "stage": stage, "level": level, "message": message, **extra} |
| with self.log_file.open("a", encoding="utf-8") as f: |
| f.write(json.dumps(event, ensure_ascii=False) + "\n") |
|
|