Spaces:
Runtime error
Runtime error
File size: 1,076 Bytes
4e837d8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | from __future__ import annotations
import json
import logging
import sys
from datetime import datetime, timezone
class JsonLineFormatter(logging.Formatter):
def format(self, record: logging.LogRecord) -> str:
payload = {
'ts': datetime.now(timezone.utc).isoformat(),
'level': record.levelname,
'logger': record.name,
'message': record.getMessage(),
}
if record.exc_info:
payload['exception'] = self.formatException(record.exc_info)
return json.dumps(payload, ensure_ascii=False)
def setup_logging(name: str = 'app_kit', level: int = logging.INFO, stream=None) -> logging.Logger:
logger = logging.getLogger(name)
logger.setLevel(level)
if not any(getattr(h, '_all4_json', False) for h in logger.handlers):
handler = logging.StreamHandler(stream or sys.stderr)
handler._all4_json = True # type: ignore[attr-defined]
handler.setFormatter(JsonLineFormatter())
logger.addHandler(handler)
logger.propagate = False
return logger
|