공통 로깅 라이브러리 설계에서 강제 포맷과 확장성을 균형 있게 잡은 경험을 정리한 결
인턴 프로젝트에서 공통 로깅 라이브러리 설계를 맡았습니다. 여러 서비스가 각자 다른 방식으로 로그를 남기고 있어서 장애 때 장애 추적이 어려웠습니다. 공통 로그 포맷(타임스탬프·서비스명·트레이스 ID·레벨)을 정의하고, 각 서비스에서 최소한의 코드 변경으로 붙일 수 있도록 래퍼 클래스 형태로 설계했습니다. 초안을 팀에 공유했더니 '커스텀 필드를 추가하기 어렵다'는 피드백이 있었고, 빌더 패턴으로 선택적 필드를 확장할 수 있게 수정했습니다. 이 경험으로 공통 라이브러리는 최소한의 강제 포맷과 자유로운 확장점을 균형 있게 가져가는 것이 실제 채택률을 높인다는 것을 배웠습니다.