개발 slecs

인증 로그 노이즈 제거로 모니터링 신뢰도 개선

목차

Auth.js 라이브러리의 로거 설정을 조정해서 JWTSessionError로 인한 콘솔 노이즈를 억제했다. 사실 작은 수정 같지만, 이게 개발/운영 경험과 모니터링 품질에 꽤 큰 영향을 미쳤다.

문제: 로그가 로그 역할을 안 할 때

Auth.js는 기본적으로 꽤 친절하게 로그를 남긴다. 특히 JWT 세션 관련 에러는 인증 흐름에서 자주 발생하는데, 기본 로거 설정이 모든 에러를 같은 수준으로 출력하고 있었다. 문제는 이 에러들이 대부분 예상된, 처리 가능한 에러였다는 점이다.

예를 들어 만료된 토큰, 잘못된 포맷의 세션, 클라이언트가 쿠키를 송신하지 않은 경우 같은 상황들이다. 비즈니스 로직 관점에선 "음, 재인증 필요한 경우네"로 처리되는 상황인데, 콘솔엔 error 레벨의 경고가 계속 쌓인다.

팀 입장에서 어떤 일이 생겼나?
- CI 로그, 운영 대시보드에서 실제 에러와 노이즈 구분이 어려워짐
- 온콜 엔지니어가 알림을 받아도 "또 JWT 타임아웃이겠지"라고 판단하기 쉬워짐
- 진짜 문제가 있는지 없는지 신호 자체가 약해짐

작업: 로거 레벨 조정

src/auth.ts에서 Auth.js 초기화 부분을 수정했다. 핵심은 로거의 레벨을 조정해서, JWT 세션 관련 예상 에러는 debug/warn 수준으로, 정말 처리할 수 없는 상황만 error로 올리도록 한 것이다.

// Before: 기본 설정, 모든 에러가 같은 레벨
import NextAuth from "next-auth"

export const { handlers, auth } = NextAuth({
  // ... 다른 설정
})

// After: 로거 설정 조정
import NextAuth from "next-auth"

export const { handlers, auth } = NextAuth({
  // ... 다른 설정
  logger: {
    error(code, ...message) {
      // JWTSessionError는 예상된 에러 → debug로만 출력
      if (code === "JWTSessionError") {
        console.debug("[Auth] JWT Session:", ...message)
      } else {
        console.error("[Auth] Error:", ...message)
      }
    },
    warn(code, ...message) {
      console.warn("[Auth] Warning:", ...message)
    },
    debug(code, ...message) {
      if (process.env.DEBUG_AUTH === "true") {
        console.log("[Auth] Debug:", ...message)
      }
    },
  },
})

이렇게 하면:
- 프로덕션: JWTSessionError가 기본적으로 보이지 않음 (debug 단계 외)
- 로컬 개발 + DEBUG_AUTH=true: 필요하면 상세 추적 가능
- 운영 모니터링: 진짜 구성 에러, 서버 상태 문제만 alert 대상이 됨

비슷한 경험과 팀 배움

이런 작업하다 보면 몇 가지 패턴을 깨닫게 된다.

상황 흔한 실수 개선 방향
서드파티 라이브러리 로깅 "기본값이 최선"이라고 가정 도메인 지식 적용 (JWT, 세션은 예상 실패 잦음)
콘솔 vs 모니터링 시스템 모든 log를 같은 채널로 레벨별로 다른 처리 (debug→로컬만, error→alert)
팀의 온콜 피로 노이즈 많을수록 신호 무시 자신감 있는 알림이 대응 속도 높임

그리고 코드리뷰할 때도 이걸 체크한다. "이 에러는 보통 어떤 상황에서 나오는가? 사용자가 봐야 할 에러인가? 개발자만 알면 되는 에러인가?" 라이브러리 설정이 작더라도, 팀 운영 품질에 영향을 준다.

또 하나 배운 점은, 라이브러리 공식 문서에서 "logger 커스터마이징 가능"이라는 항목이 있으면 꼭 체크해봐야 한다는 것. 대부분의 성숙한 라이브러리는 로깅 정책을 expose 해놨는데, 많은 프로젝트가 기본값으로만 쓰다가 나중에 모니터링 신뢰도가 떨어진다.

끝.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.