report HAN-266 asurada final 2026-05-22

[HAN-266] bridge.py 로그 다이어트 — file handler INFO + 라이브러리 로거 WARNING 확장

Summary

bridge.py:setup_logging() file handler를 DEBUG → INFO로 상향하고 noisy 라이브러리 로거 8개를 WARNING으로 명시 고정. bridge.log의 full Slack event payload 덤프 차단 + log_monitor.py false-positive cascade 근본 차단.

Context

사건 흐름

1. #pantheon-alerts에 "Process exit" 알림 반복 발생.

2. Asurada 1차 분석: payload 안에 exit 1 텍스트가 우연 매칭. → log_monitor.py IGNORE_PATTERNS에 한 줄 추가하는 우회 fix 제안.

3. Jarvis 자문(feedback_root_cause_first): 우회 fix는 다음 라이브러리 페이로드에서 또 터짐. 근본 원인은 bridge.py:125 file handler가 DEBUG라서 라이브러리들이 full request/response payload를 통째로 로그에 덤프한다는 점.

4. 방향 전환 → 본 PR.

측정 데이터

항목
어제 `bridge.log` 크기~300 MB
오늘 1시간 누적~79 MB
HAN-146 / HAN-248 계열 false-positive PR6+건

Plan / Scope

작업 항목

AC

Decisions

결정근거
`root.setLevel(INFO)` — 우리 코드 `log.debug(...)` ~20개 호출 silently drop시작/종료/에러는 INFO+이므로 운영 가시성에 영향 없음. DEBUG 옵저버빌리티 손실 < 디스크/오탐 비용
우회 fix(IGNORE_PATTERNS 한 줄 추가) 폐기`feedback_root_cause_first` — 보편 패턴(라이브러리 로거 WARNING 고정)과의 차이가 근본 원인
`log_monitor.py` IGNORE_PATTERNS 유지라이브러리 동작 변경(예: 새 SDK 버전이 INFO에서도 payload 덤프) 대비 안전망
`asyncio`도 WARNING 명시 (기본 WARNING이라 redundant)의도 명시. 향후 root level 다시 내릴 때 안전

Risks

위험영향대응
`jarvis` logger의 DEBUG 호출 ~20개 모두 silent drop운영 진단 시 정보 부족 가능INFO 레벨에 충분한 시작/종료/에러 로그 존재. 디버깅 필요 시 임시로 `root.setLevel(DEBUG)` 토글
라이브러리 로거 누락 (예: 새 의존성)다시 페이로드 덤프 시작`log_monitor.py` IGNORE_PATTERNS 안전망 + 1시간 후 크기 검증
새 SDK 버전이 WARNING 레벨로 payload 덤프false-positive 재발IGNORE_PATTERNS + 정기 grep 모니터링

Result

완료된 것

변경 라인

bridge.py setup_logging() (lines 117–146) — +15/−5

배운 것

1. 우회 fix vs 근본 원인 진단: 같은 매니패스테이션(false-positive)이 라이브러리 layer마다 반복되면 IGNORE_PATTERNS 누적은 증상 도구화. 1차 원인(producer side = 로깅 레벨)을 끊는 게 정답.

2. 라이브러리 로거는 명시 차단: Python 표준 logging은 root에 propagate. setLevel(DEBUG) root + 라이브러리 로거 NOTSET이면 라이브러리 내부 DEBUG 다 흘러옴. slack_bolt·slack_sdk 외에도 urllib3·httpx·httpcore·websockets가 noisy candidates.

3. jarvis 로거 분리 운영: log = logging.getLogger("jarvis")를 별도 named logger로 두면, root level과 분리해 우리 코드만 DEBUG로 내릴 수 있는 옵션이 열림. 본 PR에서는 INFO 통일 선택했지만, 향후 디버깅 모드에서 jarvis만 DEBUG 토글 가능.

링크