본문 바로가기
개발 환경 & 생산성 도구

스프링 부트 로깅 관리 전략: Logback으로 서버의 기록을 완벽하게 통제하기

by CodeByJin 2026. 2. 28.
반응형

개발이 끝나고 서버를 돌리기 시작하면 예상치 못한 문제들이 툭툭 튀어나오곤 하죠. 사실 이 부분이 가장 번거로우시죠? 사용자가 "접속이 안 돼요"라고 하는데, 정작 서버에서는 아무런 반응이 없으면 정말 눈앞이 캄캄해집니다. 막상 찾아보면 로그 레벨이니 어펜더(Appender)니 용어가 너무 어려운데요. 로깅은 마치 '비행기의 블랙박스'와 같습니다. 사고가 나기 전에는 소중함을 모르지만, 문제가 생겼을 때는 유일한 탈출구가 되어주죠. 오늘은 VSCode 환경에서 스프링 부트의 기록을 효율적으로 남기는 방법을 정리해 드릴게요.

로깅(Logging)의 기본 개념과 로그 레벨 구분

로그는 단순히 화면에 글자를 찍는 게 아닙니다. 상황의 심각도에 따라 등급을 나누어 관리해야 하죠. 모든 정보를 다 남기면 서버 저장 공간이 순식간에 가득 차버리고, 너무 안 남기면 정작 필요할 때 범인을 찾을 수 없습니다. 개인적으로 로그 레벨을 상황에 맞게 설정하는 것이 운영의 묘미이자 가장 핵심적인 지점이라고 생각합니다.

로그 레벨 심각도 및 용도 비유
ERROR 심각한 문제 발생, 즉시 확인 필요 건물에 불이 난 상황
WARN 잠재적인 문제, 일단 주의 깊게 관찰 가스 점검 경고등이 켜진 상황
INFO 정상적인 서비스 운영 정보 (로그인 등) 열차가 정시에 도착했다는 안내
DEBUG 개발 단계에서 상세 데이터 확인용 현미경으로 세포를 관찰하는 상황

실전! Logback 설정 및 로그 파일 관리 방법

스프링 부트는 기본적으로 'Logback'이라는 강력한 도구를 내장하고 있습니다. application.properties에서 간단하게 설정할 수도 있지만, 실무에서는 logback-spring.xml 파일을 따로 만들어 관리하는 경우가 많아요. 저도 처음엔 헷갈렸던 부분인데, 파일 하나로 콘솔 출력 모양과 파일 저장 규칙을 모두 정할 수 있어 무척 편리합니다.

  1. 설정 파일 생성: src/main/resources 아래에 logback-spring.xml 파일을 만듭니다.
  2. 콘솔 설정(ConsoleAppender): 개발할 때 VSCode 터미널에 예쁜 색상으로 로그가 찍히도록 패턴을 정합니다.
  3. 파일 저장(RollingFileAppender): 이건 저만 아는 건데, 로그를 파일 하나에 다 때려 넣으면 나중에 파일이 너무 커져서 열리지도 않습니다. 날짜별로 파일을 쪼개고(Rolling), 30일이 지난 로그는 자동으로 지워지도록 설정하는 게 정석이에요.
  4. SLF4J 활용: 코드에서 로그를 남길 때는 private final Logger log = LoggerFactory.getLogger(getClass());를 사용하거나, Lombok의 @Slf4j 어노테이션을 쓰면 코드가 훨씬 깔끔해집니다.

이건 모르면 손해 보는 꿀팁인데, 로그 메시지에 변수를 넣을 때 log.info("id : " + id); 처럼 더하기 연산자를 쓰지 마세요. log.info("id : {}", id); 처럼 중괄호를 써야 성능 낭비를 막을 수 있습니다.

반대로 로그를 너무 많이 남기면 곤란해집니다

로그가 많으면 무조건 안심이 될 것 같지만, 실제로는 상황이 복잡해질 수 있습니다. 솔직히 말씀드리면, 의미 없는 DEBUG 로그를 실서비스 서버에 그대로 켜두면 서버 전체 성능이 눈에 띄게 떨어집니다. 초당 수천 건의 요청이 들어오는 서비스라면 로그를 파일에 기록하는 속도가 CPU 연산 속도를 발목 잡는 주객전도 상황이 벌어지죠.

 

이 단계에서 흔히 하는 실수는 개인정보(비밀번호, 주민번호 등)를 로그에 그대로 노출하는 것입니다. 보안 점검 자료에 따르면 로그를 통한 개인정보 유출은 개발자가 가장 자주 저지르는 치명적인 실수 중 하나예요. 전문가의 시선으로 보건대, 로그는 '필요한 정보만', '안전하게' 남기는 게 기술입니다. 무분별한 System.out.println() 사용은 로그 레벨 제어가 불가능해 관리에 큰 방해가 되니 꼭 피해야 합니다.

신뢰받는 서버를 만드는 마지막 퍼즐

결국 로깅은 사용자와 개발자 사이의 보이지 않는 대화라고 봐요. 사용자가 겪은 불편함을 로그라는 기록을 통해 추적하고 빠르게 해결해 줄 때, 서비스의 신뢰도가 올라가는 거죠. 2026년 기업용 자바 표준 가이드라인에서도 효율적인 로깅 시스템 구축을 개발자의 핵심 역량으로 꼽고 있습니다.

제 생각에는 로그를 '단순한 기록'이 아니라 '데이터'로 바라보는 태도가 중요할 것 같아요. 오늘 내가 남긴 로그 한 줄이 나중에 대형 장애를 막는 결정적인 단서가 될 수 있으니까요. 여러분은 지금 서버에 어떤 메시지를 남기고 계신가요? 혹시 과거에 로그가 없어서 새벽까지 원인을 못 찾아 고생했던 아픈 기억이 있으신가요? 여러분만의 로깅 원칙이 있다면 무엇인지 궁금합니다.

 

개발자의 첫인상!  VS Code로 GitHub README 작성법과 포트폴리오 정리 노하우

코드를 다 짜고 배포까지 마쳤는데, 정작 누군가에게 내 프로젝트를 보여주려니 막막한 적 없으신가요? 사실 이 부분이 가장 번거로우시죠? "코드가 좋으면 됐지" 싶지만, 막상 채용 담당자나 동

byteandbit.tistory.com

반응형