import sys import traceback from datetime import datetime, timezone class _Logger: """원본 DerbyServer LOG 인터페이스를 간소화한 버전. LOG.i / LOG.d / LOG.w / LOG.e_no_callstack / LOG.SetPrefix 를 제공한다. """ def __init__(self): self._prefix = "" def SetPrefix(self, prefix: str): self._prefix = prefix def _now(self) -> str: return datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S") def _write(self, level: str, msg): head = f"{self._now()} [{level}]" if self._prefix: head += f"[{self._prefix}]" print(f"{head} {msg}", file=sys.stderr if level in ("WARN", "ERROR") else sys.stdout) def d(self, msg): self._write("DEBUG", msg) def i(self, msg): self._write("INFO", msg) def w(self, msg): self._write("WARN", msg) def e(self, msg): self._write("ERROR", msg) traceback.print_stack() def e_no_callstack(self, msg): self._write("ERROR", msg) LOG = _Logger()