LockedIn / app /core /logging.py
JermaineAI's picture
Add failed generation logging
d2a6df1
Raw
History Blame Contribute Delete
1.2 kB
import json
from datetime import datetime, timezone
from pathlib import Path
from typing import Any
from app.core.config import Settings
def log_failed_generation(
settings: Settings,
*,
normalized_skill: str,
stage: str,
model_used: str | None = None,
validation_error_summary: str | None = None,
raw_model_response: str | None = None,
extra: dict[str, Any] | None = None,
) -> None:
if not settings.log_failed_generations:
return
log_dir = Path("logs/failed_generations")
if not log_dir.is_absolute():
log_dir = Path.cwd() / "app" / log_dir
log_dir.mkdir(parents=True, exist_ok=True)
timestamp = datetime.now(timezone.utc).isoformat()
payload = {
"timestamp": timestamp,
"normalized_skill": normalized_skill,
"stage": stage,
"model_used": model_used,
"validation_error_summary": validation_error_summary,
"raw_model_response": raw_model_response,
"extra": extra or {},
}
safe_name = f"{timestamp.replace(':', '-').replace('.', '-')}_{normalized_skill or 'unknown'}.json"
(log_dir / safe_name).write_text(json.dumps(payload, indent=2), encoding="utf-8")