- 구성 요소에 따라서 각각의 패턴을 구성하는 방법도 존재하지만 이미 구성되어 있는 패턴을 이용하는 방법이 있습니다.
1. common의 로그 형식의 경우 LogFormat "%h %l %u %t \"%r\" %>s %b" - common 를 가집니다. 2. combined의 로그 형식의 경우 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined 를 가집니다.
2022-11-17 09:44:40 200 POST /api/v1/user/selectUser HTTP/1.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 <http://localhost:8000/> 0:0:0:0:0:0:0:1 241
💡 로그 전체 사항에 대한 상세 구성요소에 대한 설명입니다.
// Timestamp : 요청이 발생한 시간
2022-11-17 09:44:40
// Status Code: HTTP 응답 상태 코드
200
// Remote Host: HTTP 요청을 보낸 클라이언트의 IP 주소
POST /api/v1/user/selectUser
// Request Line: HTTP 요청 메서드, URL 및 HTTP 버전
HTTP/1.1 Mozilla/5.0
// User Agent : HTTP 요청을 보낸 클라이언트의 브라우저 정보
(Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
// Referer: HTTP 요청을 보낸 페이지의 URL
<http://localhost:8000/>
// Response Size: HTTP 응답 본문의 크기
0:0:0:0:0:0:0:1 241
3) Access Log 환경 설정
💡 해당 페이지에서는 Spring Boot 환경 내에서 application.properties 파일 내에 환경 설정을 하는 방법에 대해서 공유합니다.
1.application.properties 파일에 저장하는 경우
💡 해당 파일 구성은 Timestamp / Status Code / Remote Host / Request Line / User Agent / Referer / Response Size 모든 구성요소가 출력되도록 구성이 되었습니다.
# 일 별 Access Log를 설정합니다.
server.tomcat.basedir=.
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%{yyyy-MM-dd HH:mm:ss}t\\t%s\\t%r\\t%{User-Agent}i\\t%{Referer}i\\t%a\\t%b
[ 더 알아보기 ]
💡 server.tomcat.basedir=. 속성
- 해당 속성은 Tomcat이 로그 파일을 기록할 디렉터리를 지정합니다. 만약 값을 설정하지 않으면, Tomcat은 기본 디렉터리인 $CATALINA_BASE/logs를 사용합니다. 또한, .을 설정하면 실행 중인 애플리케이션의 루트 디렉터리에 로그 파일을 기록합니다.
💡 server.tomcat.accesslog.enabled 속성
- 해당 속성은 Tomcat이 Access Log를 사용할지 여부를 지정합니다. 이 속성은 true로 설정해야 Access Log가 기록됩니다.
💡server.tomcat.accesslog.pattern 속성
- 해당 속성은 Access Log의 구성 요소를 지정하는 패턴입니다. 이 속성을 사용하여 Access Log에 포함될 정보를 지정할 수 있습니다. common, combined 등 이미 지정된 패턴을 사용할 수 있습니다.
2. 결과 확인
1. 환경 구성을 한 후로 아래와 같이 access_log 파일이 생성되었습니다
2. postman을 이용하여 실제 전송을 하였을 때의 테스트를 진행합니다
💡 postman을 이용하여서 서버로 HTTP 요청을 보냈습니다.
💡 해당 요청한 로그가 출력이 잘됨을 확인하였습니다.
4) 참고
1. Access Log 관련 속성들
이름
설명
기본값
server.tomcat.accesslog.buffered
주기적으로만 플러시되도록 출력을 버퍼링할지 여부입니다.
true
server.tomcat.accesslog.check-exists
외부 프로세스에서 이름을 바꾼 경우 다시 생성할 수 있도록 로그 파일 존재 여부를 확인할지 여부입니다.
false
server.tomcat.accesslog.condition-if
"ServletRequest.getAttribute(conditionIf)"가 null을 생성하지 않는 경우에만 요청 로깅을 활성화할지 여부입니다.