여러 줄 주석이 설명보다 경위(예전·실측·지적)를 적고 있어 읽는 사람이 결론을 찾기 어려웠다. - ts·tsx·js·mjs·css·py 478개: 여러 줄 주석은 첫 문장 한 줄로, 과거형·날짜 문장은 삭제 - 주석 위치는 TypeScript 파서·파이썬 tokenize/ast 로 찾는다 — 문자열 안의 # · /* 는 건드리지 않는다 - eslint·ts·noqa·type: ignore 같은 지시 주석은 그대로 둔다 파이썬 275개 정리 전후 AST 동일, TS 298개 주석 뺀 토큰 동일(빈 JSX 주석 10곳만 차이). site·frontend·admin tsc, site vitest 105 passed Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
42 lines
965 B
Python
42 lines
965 B
Python
import sys
|
|
import traceback
|
|
from datetime import datetime, timezone
|
|
|
|
|
|
class _Logger:
|
|
"""원본 DerbyServer LOG 인터페이스를 간소화한 버전."""
|
|
|
|
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()
|