BiGRU_T_version / src /bigru_t /utils /logging_utils.py
PowerMachine's picture
Upload folder using huggingface_hub
3275441 verified
Raw History Blame Contribute Delete
1.25 kB
"""Xavante - logging_utils.py - Logging estruturado com contexto."""
from __future__ import annotations
import json
import logging
import sys
from datetime import datetime
from typing import Any
class JSONFormatter(logging.Formatter):
def format(self, record: logging.LogRecord) -> str:
log_entry = {
"timestamp": datetime.utcnow().isoformat() + "Z",
"level": record.levelname,
"logger": record.name,
"message": record.getMessage(),
}
if hasattr(record, "context"):
log_entry["context"] = record.context
return json.dumps(log_entry, default=str)
def setup_logging(level: int = logging.INFO, json_output: bool = False) -> None:
root = logging.getLogger()
root.setLevel(level)
for h in list(root.handlers):
root.removeHandler(h)
handler = logging.StreamHandler(sys.stdout)
if json_output:
handler.setFormatter(JSONFormatter())
else:
handler.setFormatter(
logging.Formatter(
"[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
)
root.addHandler(handler)
__all__ = ["JSONFormatter", "setup_logging"]