홈 › 실무 확장 › 10 / 22

로깅 실무: 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그

섹션 7진행 0 / 22

로깅 실무 — 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그

SLF4J·Logback 이 하는 일을 JDK 로깅으로 직접 만들어 보며, 장애 때 로그 한 줄로 요청을 추적하고 개인정보·디스크·성능 사고를 막는 운영 규칙을 익힙니다.

1. 왜 배우는가

Spring Boot + MyBatis 로 사내 업무 시스템을 운영하다 보면, 장애가 났을 때 유일한 단서가 로그 파일인 경우가 많습니다. 폐쇄망이라 원격 디버거를 붙이기 어렵고, ELK 나 Loki 같은 수집기가 아예 없는 서버도 흔합니다. 그럴 때 로그 한 줄이 부실하면 "언제 무슨 요청이 왜 실패했는지"를 재현할 방법이 없습니다.

System.out.println 으로 대충 찍던 로그가 실무에서 안 통하는 이유는 레벨이 없어 켜고 끌 수 없고, 여러 요청이 섞이면 어느 줄이 누구 것인지 구분이 안 되고, 파일이 계속 커져 디스크를 채우기 때문입니다. SLF4J 와 Logback 은 이 문제를 이미 해결한 도구이지만, "왜 이렇게 써야 하는가"를 모르고 설정만 복사하면 사고가 재발합니다.

이 레슨은 SLF4J·Logback 이 감춰 둔 로깅 구조를 JDK 로깅(java.util.logging, JUL)으로 직접 만들어 보고, 그 위에서 요청 추적(MDC), 예외 로깅, 성능, 마스킹, 파일 롤링, 구조화 로그까지 8가지 실무 시나리오를 다룹니다. 코드는 java-src/extension/10_logging 에 있고 Main·Mdc·Formatters·MaskingFilter 네 파일로 구성됩니다.

Main 을 실행하면 8개 시나리오가 순서대로 콘솔에 결과를 찍고 logs/ 폴더에 롤링된 파일을 남깁니다. 실무는 SLF4J 파사드에 Logback 구현체를 쓰지만, 로거 트리·레벨 필터·핸들러·포맷터·MDC 개념은 JUL 과 완전히 같습니다.

이 레슨을 마치면 Logback 설정 파일의 각 태그가 무엇을 대신하는지 짚을 수 있고, 왜 그 태그가 그 자리에 있는지도 설명할 수 있습니다. 설정을 복사만 하던 상태에서 벗어나, 새 서비스를 붙일 때 스스로 로깅 설정을 조정할 수 있게 되는 것이 이 레슨의 목표입니다.