TRIGNUM-300M / logging.py
Codfskitraceon's picture
Upload 24 files
7c48757 verified
"""
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