본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Apache Web Server Log

아파치 웹 서버에서 자체적으로 생산되는 접근 로그, 에러 로그로 일반적으로 access_log, error_log 와 같은 명칭으로 저장된다.

로그 저장 위치나 포맷은 아파치 기본 설정 파일은 httpd.conf 에서 설정할 수 있다.

  • 접근 로그는 CustomLog 지시자로 남긴다. 문법은 CustomLog 파일경로 로그형식이름 이다.
CustomLog /www/logs/access_log common
ErrorLog  /www/logs/error_log
  • 위 첫 줄은 접근 로그를 /www/logs/access_log 에 common 형식(아래 LogFormat 으로 정의된 기본 형식, Common Log Format)으로 남긴다는 뜻이다. combined 를 쓰면 Referer 와 User-Agent 가 더해진다.
  • 에러 로그는 ErrorLog 로 위치를, LogLevel 로 남길 수준을 정한다.
  • 경로가 /로 시작하지 않으면 ServerRoot 기준 상대 경로다. 레드햇 계열 기본값은 logs/access_log(/var/log/httpd/access_log)다.

로그 형식은 "LogFormat"으로 지정한다. 문법은 다음과 같다.

LogFormat "포맷" 로그-형식-이름

기본적으로 "httpd.conf" 파일에 작성되어 있는 로그 형식으로는 다음의 두 가지가 정의되어 있다.

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common

로그 형식 이름으로 "common"과 "combined"의 두 가지가 있다. 형식은 여러 항목의 조합에 의해 정의되었고, 설정 가능한 주요 항목은 다음과 같다.

설정값 의미
%a 액세스한 IP 주소
%A 서버 (Apache)의 IP 주소
%B 전송된 바이트 수 (헤더는 제외)
%b 전송된 바이트 수 (헤더는 제외), 0바이트인 경우는 '-'이 표시된다.
%f 요청된 파일 이름
%h 원격 호스트 이름
%H 요청 프로토콜 이름
%l 클라이언트 식별자
%m 요청 메소드명
%q 요청에 포함된 쿼리 문자열, 공백 이외는 "?"가 붙는다.
%r 요청의 첫 번째 행의 값
%s 응답 상태
%>S 마지막 응답의 상태
%t 시간
%T 처리하는데 걸린 시간
%u 인증 사용자명
%U 요청의 URL 경로
%v 요청에 대한 가상 호스트 이름
%V UseCanonicalName 따른 서버명.
%X 연결 상태
%{쿠키명}C 요청에 포함된 쿠키 값
% {환경변수명}e 환경 변수명의 값
%{헤더명}i 요청에 포함된 헤더명의 값
%{헤더명}o 응답에 포함된 헤더명의 값
%{메모}n 모듈에서 반환한 메모의 값
%{포맷}t 포맷된 시간

이러한 항목을 열거하고 쌍따움표( ")로 감싸서 지정한다. 포맷 중에 쌍따움표을 작성하는 경우는 역슬레쉬("")으로 이스케이프하여 작성한다.

항목 중에는 중괄호({})로 감싸서 작성하는 항목이 있는데, 예를 들어, "%{헤더명}i"는 헤더 중에서 헤더명에 지정한 값을 받아와서 기록한다. "%{User-Agent}i"라고 지정할 경우에는 헤더에서 "User-Agent"의 값을 기록한다.

  • 최초 원문 출처: https://araikuma.tistory.com/801 [프로그램 개발 지식 공유:티스토리]