1. 개요

  Apache HTTP Server에서 복사+붙여넣기로 의미없이 입력하던 Log Format에 대해 제대로 알아야 한다.
  흔히, Apache 사이트에서 메뉴얼을 찾아가서 확인할 수 있지만, 너무 귀찮은 행보이기에 가져와 보았다.

2. 방법

  방법은 모두가 알 듯이, %d %D 이런식으로 Log 정의하는 부분에 작성을 한다.
  ex> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" 
 
  다음의 의미를 알고 가면, 보다 원하는 Log를 얻을 수 있다.
 

형식 문자열

설명

%%

퍼센트기호

%a

원격IP-주소

%A

(서버) IP-주소

%B

HTTP 헤더를제외한전송바이트수.

%b

HTTP 헤더를제외한전송바이트수. CLF 형식과같이전송한내용이없는경우0 대신'-'가나온다.

%{Foobar}C

서버가수신한요청에서 Foobar 쿠키의내용.

%D

요청을처리하는데걸린시간(마이크로초단위).

%{FOOBAR}e

환경변수 FOOBAR의내용

%f

파일명

%h

원격호스트

%H

요청프로토콜

%{Foobar}i

서버가수신한요청에서 Foobar: 헤더의내용.

%l

(있다면identd가제공한) 원격로그인명. mod_ident가있고 IdentityCheck가 On이아니면빼기기호를기록한다.

%m

요청메써드

%{Foobar}n

다른모듈이기록한 Foobar 노트(note) 내용.

%{Foobar}o

응답의 Foobar: 헤더내용.

%p

요청을서비스하는서버의정규포트

%P

요청을서비스하는자식의프로세스ID.

%{format}P

요청을서비스하는자식의프로세스ID 혹은쓰레드ID. format에는 pid와 tid가가능하다.

%q

질의문자열(질의문자열이있다면앞에 ?를붙이고, 없다면빈문자열)

%r

요청의첫번째줄

%s

상태(status). 내부리다이렉션된요청의경우*원래* 요청의상태이다. 최종요청의상태는 %>s.

%t

common log format 시간형식(표준영어형식)의시간

%{format}t

strftime(3) 형식format의시간. (지역시간일수있음)

%T

요청을처리하는데걸린시간(초단위).

%u

원격사용자(auth가제공하며, 상태(%s)가401인경우이상한값을나올수있음)

%U

질의문자열을제외한요청URL 경로.

%v

요청을서비스한서버의정규 ServerName.

%V

UseCanonicalName 설정에따른서버명.

%X

응답을마쳤을때연결상태.

X =

응답을 마치기 전에 연결이 끊어졌다.

+ =

응답을 보낸후에도 연결이 살아있다(keep alive).

- =

응답을 보낸후 연결이 끊어졌다.

(아파치1.3 후반버전에서이지시어는 %c였지만, 전통적인ssl %{var}c 문법과겹쳐서변경했다.)

%I

요청과헤더를포함한수신바이트수로0일수없다. 이를사용하려면 mod_logio가필요하다.

%O

헤더를포함한송신바이트수로0일수없다. 이를사용하려면 mod_logio가필요하다.

 

보다 자세한 설명은 다음의 링크로 알 수 있다.

https://httpd.apache.org/docs/2.2/ko/mod/mod_log_config.html