로깅카드 — python logging/winston 대응 검증 (파동① 존재≠동작)
개요
crowny-rpnkit 대응카드 시리즈(SQL카드와 동일 방법론)에 로깅 카드를 추가.
libs/로깅.한선(정본)의 전 API를 실컴파일+실행으로 실측 검증하고, 조용히 동작 안 하는 함정을 적발.
무엇을 했는지
- 자산 인벤토리:
libs/로깅.한선(158줄, 정본) vs libs/로거.한선(31줄, 데모/충돌 위험) 식별.
- 전 API 실측: 레벨필터링·파일기록·JSON/기본 포맷·컨텍스트·로거객체·성능타이머·필터읽기 — hanseonc_high → crownyc run, stderr 분리, perl alarm 타임아웃.
- 카드 + 검증스크립트(
로깅검증.sh, 7/7 PASS) 작성.
핵심 적발(버그, 수리 안 함 — 파동② 대상)
- JSON 포맷에서 로그 컨텍스트(구조화 메타데이터)가 계산만 되고 출력에서 통째로 누락(
_포맷줄() JSON 분기가 컨텍스트 변수 미참조).
로거경고()/로거오류()가 로거 객체 자신의 레벨 필드를 아예 확인 안 함(로거디버그/정보만 확인).
- 더 근본적으로 로거 필드는 전역 레벨을 절대 override 못 함(전역이 항상 하한선) — winston child-logger/
getLogger().setLevel() 같은 독립 인스턴스 개념이 사실상 무력.
- 성능 타이머(성능시작/성능끝)가 초단위 정수 정밀도뿐(1초 미만 작업은 항상 "0초").
- 로그 회전(
_로그최대크기/_로그회전수) 변수만 있고 로직 전무 — grep으로 죽은 코드 확인.
로깅.한선+로거.한선 동시 import 시 함수명 충돌(SQL카드 셀DB+셀저장소 충돌과 동일 계열) + 로거.한선의 top-level 부작용 코드.
관련 파일
/Users/ef/crowny-rpnkit/대응카드/로깅카드.md
/Users/ef/crowny-rpnkit/대응카드/로깅검증.sh
/Users/ef/crowny-rpnkit/대응카드/예제/로그01_레벨필터링.한선 ~ 로그06_라이브러리충돌_로거한선.한선
- 정본:
/Users/ef/CrownyOS/crownyc/libs/로깅.한선 (수정 안 함, 라이브 무접촉 유지)
잔여 이슈 (파동② 수리 대상, 우선순위순)
- JSON 포맷 컨텍스트 누락 수정
- 로거 인스턴스 독립 레벨 재설계(전역 override 가능하게)
- 로그 회전 실제 구현
- 성능 타이머 ms 정밀도(VM에 ms opcode 있는지 확인 필요)
로거.한선 import-safe화 또는 폐기