Trignum's picture
Deploy TRIGNUM-300M Subtractive Filter Gradio App
71d3d49
raw
history blame contribute delete
991 Bytes
"""
Custom structured JSON logging for filter outputs.
"""
import json
import logging
import sys
from datetime import datetime
from typing import Any, Dict
class JsonFormatter(logging.Formatter):
def format(self, record: logging.LogRecord) -> str:
log_obj: Dict[str, Any] = {
"timestamp": datetime.utcnow().isoformat() + "Z",
"level": record.levelname,
"message": record.getMessage(),
"module": record.module
}
if hasattr(record, 'metrics'):
log_obj["metrics"] = record.metrics
return json.dumps(log_obj)
def get_structured_logger(name: str) -> logging.Logger:
"""Instantiates a logger that outputs JSON structured text."""
logger = logging.getLogger(name)
logger.setLevel(logging.INFO)
if not logger.handlers:
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(JsonFormatter())
logger.addHandler(handler)
return logger