WebtoB USERLOGFORMAT 설정하기
개발 목적으로 Webtob/JEUS 구성을 위한 분들을 위한 가이드 포스팅 :)
TmaxSoft Engineer의 설치방식으로 진행되며, WebtoB는 11년연속 국내 1위 미들웨어 입니다.
▶ 내용
공통으로 사용될 로그 포맷을 설정할 수 있도록 "USERLOGFORMAT" 이라는 절을 사용할 수 있습니다.
각 고객사에 정책에 따라서 LOGFORMAT 흔히 사용하는 COMMON, COMINED가 아닌 특수한 포맷을 사용해야하는 경우 해당 로그포맷을 공통 포맷으로 만들어서 사용할 수 있습니다.

해당 기능은 가급적으로 WebtoB 최신패치 적용 후 사용하는 것을 권장드립니다.
이유는 특정 버전 이상부터 지원이 되는데 해당 버전을 찾는 것이 쉽지 않아서 최신을 적용 후 하는 것을 추천합니다 :)
▶ 설정
WebtoB의 config 파일인 http.m을 수정합니다. (path: ${WEBTOBDIR}/config/http.m)
*USERLOGFORMAT [별칭] Format="[형식]" *LOGGING syslog Format = "SYSLOG", FileName = "/home/vagrant/webtob5/log/system.log_%M%%D%%Y%", Option = "sync" acc_node Format = "[별칭]", FileName = "/home/vagrant/webtob5/log/access.log_%M%%D%%Y%", Option = "sync" err_node Format = "ERROR", FileName = "/home/vagrant/webtob5/log/error.log_%M%%D%%Y%", Option = "sync" |
▶ 결과
access 포맷을 변경했음으로 access.log 결과 차이 확인.
변경 전 | ![]() |
변경 후 | |
< USERLOGFORMAT SET > NO 100.100.100.1 [17/Jun/2024:08:19:47 +0000] "GET / HTTP/1.1" 200 686 3 100.100.100.1 [17/Jun/2024:08:19:47 +0000] "GET /top2-1.gif HTTP/1.1" 200 7515 1 < USERLOGFORMAT SET > YES 100.100.100.1 "-" 100.100.100.1 "-" |
▶ 기타
WebtoB는 기본적으로 제공하는 공통로그포맷이 존재합니다.
☆ 로그포맷 정규식
포맷 | 설명 |
%A | 서버의 IP 주소를 표시한다. (5.0.0.2 버전 이상) |
%b | 헤더를 제외한 응답의 Byte를 표시한다. |
%c | WebtoB 응답 생성 위치를 표시한다.
|
%{_attr_name_}C | HTTP Request의 Cookie Header 값 중 '_attr_name_'에 해당하는 값을 표시한다. |
%d | 응답이 전송된 시간을 표시한다. |
%D | 요청을 처리하는데 소요된 시간을 표시한다. (단위: millisecond) |
%{ENV_NAME}e | 환경변수 ENV_NAME을 출력한다. |
%g | WebtoB가 내부적으로 사용하는 요청 식별자를 출력한다. |
%h | 요청을 보낸 장비의 IP 주소를 표시한다. |
%H | 사용한 HTTP 버전을 표시한다. |
%{HEADER_FIELD}i | HTTP Request의 HEADER_FIELD Header 값을 표시한다. 예) %{Referer]i = Request 헤더 중 Referer 헤더의 값을 기록한다. |
%I | 헤더를 포함한 요청 Byte를 표시한다. (5.0.0.4-B231.0.72 버전/빌드 이상) |
%{_id_name_}J | 요청을 JEUS로 포워딩하여 처리하는 경우 내부적으로 사용하는 요청의 식별정보를 표시한다.
|
%m | HTTP Request 메소드를 표시한다. |
%O | 헤더를 포함한 응답 Byte를 표시한다. (5.0.0.4-B231.0.72 버전/빌드 이상) |
%p | Request가 도착한 서버의 포트 번호를 표시한다. |
%q | HTTP Request의 query 값을 표시한다. |
%r | HTTP Request의 Request line 전체를 표시한다. |
%R | HTTP Request의 Request line 전체를 표시한다. CheckURL이나 URLRewrite 기능에 의해 변경된 Request line을 표시한다. |
%s | 응답에 사용된 HTTP Status Code를 표시한다. |
%S | http와 https를 구분하여 표시한다. (5.0.0.1 버전 이상) |
%t | 요청처리를 마친 시간을 표시한다. |
%T | Request를 처리하는 데 소요된 시간을 표시한다. (단위: 초) |
%u | HTTP 인증에 사용된 user 이름을 표시한다. |
%U | HTTP Request URI를 표시한다. |
%v | Host Header 필드 값을 표시한다. |
%z | 응답이 압축된 경우 압축 전/후의 응답 크기와 압축률을 표시한다. |
★ 5버전 이상에서 사용할 수 있는 공통 로그 포맷
- COMMON( %h %l %u %t \"%r\" %>s %b )
CLF에서 가장 많이 사용하는 포맷 - DEFATUL( %h %l %u %t \"%r\" %>s %b %D )
COMMON 형식의 처리 시간(%D)를 추가한 WebtoB 기본 공통 로그 포맷 - COMBINED( %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" )
HTTP 헤더에서 Referer와 User-agent를 추가한 공통 TmaxSoft 권장 공통 로그 포맷 - COMBINEDIO( %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %I %O )
5.0.0.4-B231.0.72 버전/빌드 이상 Client Request Bytes(%I), Client ResponseBytes(%O)를 추가한 공통 로그 포맷 - DEBUG( %h %l %u %t \"%r\" %>s %b %D %S \"%I\" )
DEFAULT 포맷에서 세션ID(%S)와 요청 처리 스레드 이름을 추가한 포맷
▶ 결론
대부분의 사이트에 사용하는 로그수집기의 로그 포맷은 "COMBINED" 입니다.
최근 들어서 '개인정보보호 솔루션' 또는 'Proxy-Server' 등의 도입으로 인하여
Remote Client IP가 사용자 IP로 보이지 않는 경우가 많습니다.
이때 쉽게 생각하여 변경하는 것이 LogFormat 입니다.
(물론 저라면... RPAFHeader 기능을 쓰지만요...)
포스팅의 설정처럼 로그 포맷을 공통 포맷으로 만들 경우 좀더 깔끔하고 편리한 WebtoB를
사용할 수 있습니다 :)
