ltx-2.3-colorize-diffusers / ltxc /runtime_reporting.py
John6666's picture
Upload 17 files
be8d44d verified
Raw
History Blame Contribute Delete
2.52 kB
from __future__ import annotations
import json
import logging
import time
from datetime import datetime, timezone
from pathlib import Path
from typing import Any, Callable
LOGGER_NAME = "ltx23"
def configure_logging() -> logging.Logger:
logger = logging.getLogger(LOGGER_NAME)
if not logger.handlers:
handler = logging.StreamHandler()
handler.setFormatter(
logging.Formatter(
"%(asctime)s %(levelname)s %(name)s %(message)s",
datefmt="%Y-%m-%dT%H:%M:%S",
)
)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
logger.propagate = False
return logger
LOGGER = configure_logging()
def startup_event(event: str, message: str, **fields: Any) -> None:
payload = {"event": event, "message": message, **fields}
LOGGER.info(json.dumps(payload, ensure_ascii=False, sort_keys=True, default=str))
class RunReporter:
"""One source for console logs, JSONL diagnostics, and Gradio progress."""
def __init__(
self,
*,
job_id: str,
request_kind: str,
event_path: str | Path,
progress: Callable[..., Any] | None = None,
) -> None:
self.job_id = str(job_id)
self.request_kind = str(request_kind)
self.event_path = Path(event_path)
self.event_path.parent.mkdir(parents=True, exist_ok=True)
self.progress = progress
self.started = time.perf_counter()
def emit(
self,
event: str,
message: str,
*,
fraction: float | None = None,
level: int = logging.INFO,
**fields: Any,
) -> dict[str, Any]:
record = {
"timestamp_utc": datetime.now(timezone.utc).isoformat(),
"elapsed_seconds": round(time.perf_counter() - self.started, 3),
"event": str(event),
"message": str(message),
"job_id": self.job_id,
"request_kind": self.request_kind,
**fields,
}
with self.event_path.open("a", encoding="utf-8") as handle:
handle.write(
json.dumps(record, ensure_ascii=False, sort_keys=True, default=str)
+ "\n"
)
LOGGER.log(
level, json.dumps(record, ensure_ascii=False, sort_keys=True, default=str)
)
if self.progress is not None and fraction is not None:
self.progress(max(0.0, min(1.0, float(fraction))), desc=str(message))
return record