Study

로그 찍기의 중요성

kinim329 2026. 5. 9. 23:47

로그란?

로그는 애플리케이션이 실행되는 동안
어떤 일이 발생했는지 기록해두는 정보이다.

예를 들면 다음과 같은 내용을 남길 수 있다.

log.info("계좌 생성 요청 userId={}", userId);
log.error("계좌 생성 실패 userId={}", userId, e);

단순히 코드가 실행됐는지 확인하는 용도뿐만 아니라,
나중에 문제가 발생했을 때 원인을 찾기 위한 기록으로 사용된다.

왜 로그가 중요할까?

개발 중에는 디버거를 사용해서 코드를 한 줄씩 확인할 수 있다.

하지만 실제 서버에서는 사용자의 요청이 계속 들어오고,
문제가 언제 어디서 발생했는지 바로 알기 어렵다.

이때 로그가 없으면 다음과 같은 문제가 생긴다.

  • 요청이 들어왔는지 모름
  • 어디서 실패했는지 모름
  • 어떤 데이터로 실패했는지 모름
  • 예외가 왜 발생했는지 모름

결국 코드를 다시 추측하면서 확인해야 한다.

반대로 로그가 잘 남아 있으면
문제가 발생한 흐름을 따라가면서 원인을 빠르게 찾을 수 있다.

예시

계좌 생성 기능에서 에러가 발생했다고 가정해보자.

로그가 없다면 단순히 이런 결과만 보게 된다.

500 Internal Server Error
 

하지만 로그를 남겨두면 다음처럼 확인할 수 있다.

log.info("계좌 생성 요청 userId={}, competitionId={}", userId, competitionId);

try {
    accountService.createAccount(userId, competitionId);
} catch (Exception e) {
    log.error("계좌 생성 실패 userId={}, competitionId={}", userId, competitionId, e);
    throw e;
}
 

이렇게 하면 어떤 사용자의 요청에서 문제가 발생했는지,
어떤 대회 계좌를 생성하다 실패했는지 확인할 수 있다.

주의할 점

로그는 많이 찍는다고 무조건 좋은 것은 아니다.

너무 많은 로그는 오히려 중요한 정보를 찾기 어렵게 만든다.

또한 비밀번호, 토큰, 개인정보 같은 민감한 값은
절대 로그에 남기면 안 된다.

// 좋지 않은 예
log.info("로그인 요청 password={}", password);
 

로그는 문제를 해결하기 위한 정보만 적절히 남기는 것이 중요하다.

'Study' 카테고리의 다른 글

Jenkins 개념 정리  (0) 2026.05.11
로그 레벨  (0) 2026.05.10
Redis로 분산락 거는 방법  (0) 2026.05.07
분산락  (0) 2026.05.06
N+1문제  (0) 2026.05.05