Tomcat 접근 로그(Access Log) 커스텀 설정과 분석 효율 극대화
서론
웹 서비스 운영 중 발생하는 문제의 80%는 로그 분석을 통해 해결됩니다. 특히 **접근 로그(Access Log)**는 누가, 언제, 어떤 페이지를 호출했고 얼마나 빨리 응답했는지를 기록하는 핵심 데이터입니다. Tomcat의 기본 설정을 넘어 실무에서 필요한 데이터들을 추출하는 커스텀 방법을 정리합니다.
1. 접근 로그 패턴 커스텀 (server.xml)
Tomcat의 server.xml 파일 내 <Valve> 설정을 통해 로그 패턴을 변경할 수 있습니다.
실무 추천 패턴
기본 패턴에는 가장 중요한 ‘처리 시간(Processing Time)‘이 빠져 있는 경우가 많습니다.
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %D %F %{X-Forwarded-For}i" />
- %D: 요청 처리에 소요된 시간 (밀리초, ms)
- %F: 응답을 커밋하는 데 소요된 시간 (밀리초, ms)
- %{X-Forwarded-For}i: 리버스 프록시(Nginx 등) 뒤에 있을 때 실제 클라이언트 IP를 기록
2. 로그 순환(Rotation) 및 보관 정책
로그 파일이 무한정 커지는 것을 방지하기 위해 날짜별 분리 설정을 확인해야 합니다.
<Valve ...
rotatable="true"
renameOnRotate="true"
fileDateFormat="yyyy-MM-dd" />
- rotatable: 날짜가 바뀌면 새 파일을 생성할지 여부.
- renameOnRotate: 활성 로그 파일 이름을 고정하고 이전 로그를 날짜별로 변경할지 여부.
3. catalina.out 무한 증식 방지
Tomcat의 모든 표준 출력(stdout)이 기록되는 catalina.out은 파일 크기가 계속 커져 디스크 풀(Full)의 주범이 됩니다.
- 방법 1:
logrotate도구 사용 (가장 권장). - 방법 2: 애플리케이션 레벨(Logback, Log4j2)에서 로그 파일을 직접 파일로 빼내고 Tomcat의 콘솔 로그 비중을 줄임.
핵심 SEO 포인트: 응답 속도 분석 (%D)
- 왜 %D를 남겨야 하나?: 단순한 서버 에러뿐만 아니라 특정 API가 왜 느려졌는지, DB 지연인지 네트워크 지연인지를 파악하기 위한 가장 기초적인 데이터가 바로
%D를 통한 응답 속도 추적입니다. - X-Forwarded-For: 로드 밸런서 환경에서 실제 사용자 IP를 식별하는 것은 보안 및 마케팅 분석의 필수 요소입니다.
결론
로그는 서비스의 발자취입니다. 특히 Tomcat의 접근 로그는 단순히 기록하는 것을 넘어 ‘분석 가능한 형태’로 남기는 것이 중요합니다. 오늘 정리한 %D와 X-Forwarded-For 설정을 통해 장애 대응 능력을 한 단계 높여 보시기 바랍니다.