apache 의 경우, access_log 폴더 밑에 만들어진다.
이 로그는 액세스가 완료된 후 생성되기 때문에, 만약에 네트워크 장애로 정상적인 접속이 계속되서 지연될 경우 , 생성되지 않는다.
이럴때는 L4를 끊은 후에, 다른 서버로 돌려주고, 로그를 찍고, 에러를 분석한다.
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
이제 로그 항목의 각 부분을 설명한다.
127.0.0.1
(%h
)- 서버에 요청을 한 클라이언트(원격 호스트)의 IP 주소이다.
HostnameLookups
가On
이라면 호스트명을 찾아서 IP 주소 자리에 대신 쓴다. 그러나 이 설정은 서버를 매우 느리게 할 수 있으므로 추천하지 않는다. 호스트명을 알려면 대신 나중에 logresolve와 같은 로그를 처리하는 프로그램을 사용하는 것이 좋다. 여기에 나온 IP 주소는 사용자가 사용하는 컴퓨터 주소가 아닐 수 있다. 프록시 서버가 사용자와 서버사이에 존재한다면, 원래 컴퓨터 주소가 아니라 프록시의 주소가 기록될 것이다. -
(%l
)- 출력에서 "빼기기호"는 요청한 정보가 없음을 나타낸다. 이 경우 여기에 나올 정보는 클라이언트 컴퓨터의
identd
가 제공할 클라이언트의 RFC 1413 신원이다. 이 정보는 매우 믿을 수 없기때문에, 긴밀히 관리되는 내부 네트웍이 아니라면 절대로 이 정보를 사용하면 안된다.IdentityCheck
가On
이 아니라면 아파치 웹서버는 이 정보를 알아보려고 시도하지도 않는다. frank
(%u
)- 이는 HTTP 인증으로 알아낸 문서를 요청한 사용자의 userid이다. 보통 이 값은 CGI 스크립트에게
REMOTE_USER
환경변수로 넘겨진다. 요청의 상태코드가 401이라면 (아래 참고) 사용자가 아직 인증을 거치지 않았으므로 이 값을 믿으면 안된다. 문서를 암호로 보호하지 않는다면 이 항목은 이전 항목과 같이 "-
"이다. [10/Oct/2000:13:55:36 -0700]
(%t
)- 서버가 요청처리를 마친 시간. 형식은:
로그 형식문자열에[day/month/year:hour:minute:second zone]
day = 숫자 2개
month = 숫자 3개
year = 숫자 4개
hour = 숫자 2개
minute = 숫자 2개
second = 숫자 2개
zone = (`+' | `-') 숫자 4개%{format}t
를 사용하여 다른 형식으로 시간을 출력할 수 있다.format
은 C 표준 라이브러리의strftime(3)
과 같다. "GET /apache_pb.gif HTTP/1.0"
(\"%r\"
)- 클라이언트의 요청줄이 쌍따옴표로 묶여있다. 요청줄은 매우 유용한 정보를 담고 있다. 첫째, 클라이언트가 사용한 메써드는
GET
이다. 둘째, 클라이언트는 자원/apache_pb.gif
를 요청한다. 세번째, 클라이언트는HTTP/1.0
프로토콜을 사용한다. 요청줄의 여러 부분을 따로 로그할 수도 있다. 예를 들어, 형식문자열 "%m %U%q %H
"은 "%r
"과 똑같이 메써드, 경로, 질의문자열, 프로토콜을 로그한다. 200
(%>s
)- 이는 서버가 클라이언트에게 보내는 상태코드이다. 이 정보는 (2로 시작하는 코드) 요청이 성공하였는지, (4로 시작하는 코드) 클라이언트에 오류가 있는지, (5로 시작하는 코드) 서버에 오류가 있는지 알려주므로 매우 중요하다. 상태코드의 전체 목록은 HTTP 규약 (RFC2616 section 10)에서 찾을 수 있다.
2326
(%b
)- 마지막 항목은 응답 헤더를 제외하고 클라이언트에게 보내는 내용의 크기를 나타낸다. 클라이언트에게 보내는 내용이 없다면 이 값은 "
-
"이다. 내용이 없는 경우 "0
"을 로그하려면 대신%B
를 사용한다. - 출처: https://httpd.apache.org/docs/2.4/ko/logs.html
댓글 없음:
댓글 쓰기