피드로 돌아가기
Dev.toBackend
원문 읽기
PSR-3 의존성 제거를 통한 Domain Layer 순수성 확보 및 Logger Port 설계
A Domain Logger Port: Decoupling From PSR-3 Without Losing Context
AI 요약
Context
Application Layer 내 PSR-3 LoggerInterface 직접 사용으로 인한 인프라 의존성 누수 발생. 시스템 관리 관점의 Log Level(RFC 5424)이 도메인 로직에 침투하여 비즈니스 의미가 희석되는 설계 한계 직면.
Technical Solution
- Domain 전용 인터페이스인 DomainLogger 포트를 정의하여 인프라 의존성을 Application Layer 외부로 격리
- 8단계의 복잡한 Log Level을 도메인 중심의 event()와 failure() 두 가지 메서드로 단순화
- 로그 메시지를 문장이 아닌 dot-namespaced 형태의 이벤트 이름으로 정의하여 분석 효율성 증대
- context 데이터를 scalar 타입의 flat map으로 제한하여 JSON 직렬화 안정성 확보
- Adapter 패턴을 적용하여 DomainLogger 호출을 Monolog 등의 실제 구현체로 매핑하는 구조 설계
- CI 단계에서 도메인 경계 내 Psr\Log 임포트 여부를 검사하는 static analysis 규칙 적용
실천 포인트
1. Application/Domain Layer 내에 외부 로깅 라이브러리 임포트가 존재하는지 확인
2. Log Level 결정 주체가 비즈니스 로직인지 인프라 계층인지 검토
3. 로그 메시지를 정형화된 이벤트 이름(예: order.placed)으로 대체 가능한지 분석
4. 로깅 인터페이스를 도메인 전용 Port로 분리하고 Adapter를 통해 구현체와 연결