이 글은 HTTP 완벽가이드 21장을 참고해 정리한 포스팅입니다.
모든 서버와 프락시는 처리한 HTTP 트랜잭션을 요약해서 기록해 놓습니다. 그 이유는 사용추적, 보안, 청구, 에러탐지 등 여러가지 입니다.
로깅을 하는 대개 두가지 이유입니다.
HTTP 트랜잭션의 모든 헤더를 로깅할 수는 있지만, 모든 데이터를 그대로 로깅하면 별 연관이 없고 볼일 없는 데이터만 로깅할수도 있습니다. 따라서, 보통은 트랜잭션의 기본적인 항목들만 로깅을 합니다. 일반적으로 로깅하는 필드는 아래와 같습니다.
로그 포맷에는 여러 표준이 있습니다. 상용 혹은 오픈 소스 HTTP 애플리케이션은 대부분 표준 로그 포맷을 한개 이상 지원합니다. 그리고 그 애플리케이션 대부분이 로그 포맷을 설정하고 자체 맞춤 포맷을 만들 수 있는 설정 기능을 제공합니다.
요즘 사용하는 가장 일반적인 포맷 중 하나는, 일반 로그 포맷(Common Log Format)입니다. 본래 NCSA가 정의했고, 많은 서버가 이 로그 포맷을 기본으로 사용합니다.
아래는 일반 로그 포맷(Common Log Format)의 필드를 순서대로 나열한 표입니다.
필드 | 설명 |
---|---|
remotehost | 요청한 컴퓨터의 호스트명 혹은 IP 주소 |
username | ident 검색을 수행했다면, 인증된 요청자의 사용자 이름이 있음 |
auth-username | 인증을 수행했다면, 인증된 요청자의 이름이 있음 |
timestamp | 요청 날짜와 시간 |
request-line | HTTP 요청의 행을 그대로 기술. 예를 들어 "GET /index.html HTTP/1.1 |
response-code | 응답으로 보내는 HTTP 상태코드 |
response-size | 응답엔터티의 Content-Length |
example
127.0.0.1 user-identifier frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
많이 사용하는 또 다른 로그 포맷은 혼합 로그 포맷입니다. 이 포맷은 아파치 같은 서버들이 지원합니다. 혼합 로그 포맷은 필드 두개가 추가된것 이외에는 일반 로그 포맷과 매우 유사합니다.
그 추가된 필드 두개는 아래와 같습니다. Referer 필드는 이 URL을 요청자가 어디서 찾았는지에 대한 정보를 제공하며, User-Agent 필드는 요청을 만든 HTTP 클라이언트 애플리케이션이 무엇인지 알아볼때 유용합니다.
필드 | 설명 |
---|---|
Referer | Referer HTTP 헤더의 값 |
User-Agent | User-Agent Referer HTTP 헤더의 값 |
example
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
넷스케이프의 포맷은 NCSA 일반 로그 포맷에서 시작했지만, 프락시나 웹 캐시 같은 HTTP 애플리케이션과 연관이 있는 여러 환경을 지원하려고 포맷을 확장했습니다. 넷스케이프 확장 로그 포맷에 있는 첫 필드 일곱 개는 일반로그 포맷과 같고, 아래는 새롭게 추가된 필드들입니다.
필드 | 설명 |
---|---|
proxy-response-code | 트랜잭션이 프락시를 거칠 경우, 서버에서 프락시로의 http 응답코드 |
proxy-response-size | 트랜잭션이 프락시를 거칠 경우, 서버가 프락시에 전달하는 응답 엔터티의 Content-Length |
client-request-size | 클라이언트가 프락시로 보내는 요청의 본문이나 엔터티의 content-length |
proxy-request-size | 트랜잭션이 프락시를 거칠경우. 프락시가 서버에게 보내는 요청의 본문이나 엔터티의 Content-Length |
client-request-hdr-size | 클라이언트 요청 헤더의 바이트 길이 |
proxy-response-hdr-size | 트랜잭션이 프락시를 거칠 경우, 프락시가 요청자에게 전송하는 요청 헤더의 바이트 길이 |
proxy-request-hdr-size | 트랜잭션이 프락시를 거칠 경우, 프락시가 서버로 전송하는 요청헤더의 바이트 길이 |
server-response-hdr-size | 서버 응답헤더의 바이트 길이 |
proxy-timestamp | 트랜잭션이 프락시를 거칠 경우, 요청과 응답이 프락시를 통해 오가는 총 시간 (초단위) |
넷스케이프 확장 로그 관련 같이보면 좋을 아파치 doc 링크
넷스 케이프 확장 2 로그 포맷 관련 아파치 doc 링크
처리, 추적, 로그분석
등의 도구들을 활용하려고, 자체 로그 포맷으로 스퀴드 포맷을 적용했습니다.누락
을 발생시킵니다.적중 계량의 예 -[http 완벽 가이드 책 그림 참고]