Common Log Format (CLF)
1. 개요
1. 개요
Common Log Format (CLF)은 웹 서버가 클라이언트의 접근 정보를 기록하기 위해 사용하는 표준화된 텍스트 형식이다. 이 형식은 아파치 HTTP 서버에서 처음 정의되어 널리 채택되었으며, 이후 Nginx를 비롯한 다른 주요 웹 서버들도 기본 또는 옵션 형식으로 지원한다.
이 형식은 각 접근 로그를 한 줄로 기록하며, 사전에 정의된 일곱 개의 필드로 구성된다. 각 필드는 공백으로 구분되며, 필드 내용에 공백이 포함될 수 있는 경우 따옴표나 대괄호로 묶어서 표현한다. 이렇게 표준화된 구조 덕분에 다양한 로그 분석 도구나 스크립트에서 일관되게 데이터를 처리하고 해석할 수 있다.
CLF는 웹 서버의 기본적인 운영 상태를 모니터링하고, 트래픽 패턴을 분석하며, 문제를 진단하는 데 핵심적인 역할을 한다. 단순하면서도 필수적인 정보를 담고 있어, 웹 서버 로그 파일의 사실상의 표준 형식으로 자리 잡았다.
2. 형식
2. 형식
2.1. 필드 설명
2.1. 필드 설명
CLF의 각 로그 항목은 공백으로 구분된 일곱 개의 필드로 구성된다. 각 필드는 특정 정보를 담고 있으며, 값이 존재하지 않을 경우 하이픈(-)으로 표시된다.
첫 번째 필드는 host로, 클라이언트의 IP 주소나 호스트명을 기록한다. 두 번째 필드 ident는 클라이언트의 식별 정보를 위한 것이나, 일반적으로 사용되지 않아 거의 항상 하이픈으로 남는다. 세 번째 필드 authuser는 HTTP 기본 인증을 통해 사용자명이 제공된 경우 이를 기록하며, 인증이 없으면 하이픈이 된다.
네 번째 필드 date는 요청이 서버에 도착한 시간을 대괄호([])로 둘러싸 기록한다. 형식은 날짜, 시간, 시간대 오프셋으로 구성된다. 다섯 번째 필드 request는 클라이언트가 보낸 실제 HTTP 요청 라인을 큰따옴표("")로 묶어 저장한다. 이는 HTTP 메서드(예: GET), 요청한 리소스의 경로, 사용된 HTTP 버전을 포함한다.
여섯 번째 필드 status는 서버가 클라이언트에 반환한 HTTP 상태 코드(예: 200, 404)를 나타낸다. 마지막 일곱 번째 필드 bytes는 서버가 클라이언트에게 전송한 응답 본문의 크기를 바이트 단위로 기록한다. 응답에 본문이 없거나 크기를 알 수 없는 경우 하이픈으로 표시될 수 있다.
3. 예시
3. 예시
Common Log Format의 로그 한 줄은 위에서 설명한 형식의 각 필드가 공백으로 구분된 형태를 가진다. 가장 대표적인 예시는 다음과 같다.
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
이 예시를 필드별로 분석해 보면, 클라이언트의 IP 주소는 127.0.0.1이다. 사용자 식별 정보(ident)는 수집되지 않아 하이픈(-)으로 표시되었고, 인증된 사용자명(authuser)은 frank이다. 요청이 처리된 시간은 2000년 10월 10일 13시 55분 36초(태평양 일광절약시간대, UTC-7)이다. 클라이언트의 HTTP 요청은 GET 메서드로 /apache_pb.gif 리소스를 요청했으며, 사용한 프로토콜은 HTTP/1.0이다. 서버는 이 요청에 대해 200 OK HTTP 상태 코드로 성공적으로 응답했으며, 전송한 응답 본문의 크기는 2326바이트였다.
이와 같은 로그 라인은 웹 서버의 기본 접근 로그 파일에 지속적으로 누적되어 기록된다. 여러 개의 예시를 나열하면, 서로 다른 클라이언트, 다양한 요청 URL, 각기 다른 응답 코드와 데이터 크기를 한눈에 비교할 수 있어, 웹 트래픽의 일반적인 패턴이나 특이 사항을 파악하는 데 도움이 된다.
4. 사용 및 응용
4. 사용 및 응용
Common Log Format은 주로 웹 서버의 기본적인 접근 로그를 기록하는 데 사용된다. 아파치 HTTP 서버와 Nginx와 같은 주요 웹 서버 소프트웨어는 이 형식을 기본 또는 표준 옵션으로 지원하며, 서버에 대한 각 HTTP 요청을 한 줄의 텍스트로 남긴다. 이를 통해 서버 관리자는 누가, 언제, 어떤 자원을 요청했는지, 그리고 그 결과가 성공했는지 실패했는지를 빠르게 확인할 수 있다.
이 로그 데이터의 주요 응용 분야는 웹 트래픽 분석이다. 로그 파일을 수집하고 파싱하여 일일 방문자 수, 인기 있는 페이지, 오류 발생 빈도, 트래픽이 많은 시간대 등 기본적인 사용 통계를 도출할 수 있다. 또한, 보안 감사와 문제 해결에 필수적인 자료로 활용된다. 예를 들어, 의심스러운 IP 주소로부터의 반복적인 접근 시도를 탐지하거나, 404 오류가 빈번히 발생하는 깨진 링크를 찾아내는 데 사용된다.
로그 데이터는 단순히 눈으로 확인하는 것을 넘어서, AWStats나 Webalizer 같은 전용 로그 분석 도구의 입력 소스로도 쓰인다. 이러한 도구들은 Common Log Format 파일을 읽어 시각적인 리포트와 그래프를 생성하여, 기술적 배경이 없는 사용자도 웹사이트 이용 현황을 쉽게 이해할 수 있도록 돕는다. 따라서 이 형식은 웹 인프라 운영의 근간을 이루는 표준 중 하나이다.
5. 확장 및 변형
5. 확장 및 변형
5.1. Extended Log Format (ELF)
5.1. Extended Log Format (ELF)
Extended Log Format은 Common Log Format을 확장한 로그 형식이다. CLF의 기본 필드에 추가적인 정보를 기록할 수 있도록 설계되었다. 가장 큰 특징은 로그에 기록할 필드를 사용자가 직접 정의할 수 있다는 점이다. 이는 서버 관리자가 특정 분석이나 모니터링 목적에 맞춰 필요한 데이터만을 선별하여 로그를 생성할 수 있게 해준다.
ELF 로그의 첫 줄은 반드시 로그의 버전과 기록될 필드의 목록을 명시하는 지시어로 시작한다. 예를 들어, #Version: 1.0과 #Fields: date time c-ip cs-username 같은 형식이다. 이 지시어 덕분에 로그 파서는 각 줄의 데이터가 어떤 필드에 해당하는지 정확히 해석할 수 있다.
사용 가능한 필드는 매우 다양하며, 요청 시간, 클라이언트 IP 주소, 요청 메서드와 URL, 응답 상태 코드, 전송된 바이트 수 같은 기본 정보부터, 참조 페이지, 사용자 에이전트, 서버 처리 시간 등 세부적인 정보까지 포함한다. 이러한 유연성 덕분에 웹 분석이나 보안 감사, 성능 모니터링 등 다양한 목적에 맞춰 활용된다.
ELF는 주로 마이크로소프트 IIS 서버에서 기본 로그 형식으로 채택되어 사용되었으며, 그 유연성으로 인해 다른 웹 서버나 애플리케이션 성능 관리 도구에서도 널리 참조되는 형식이 되었다.
5.2. Combined Log Format
5.2. Combined Log Format
Combined Log Format은 Common Log Format (CLF)을 확장한 로그 형식이다. 기본 CLF의 필드에 두 가지 추가 정보를 포함시켜, 웹 서버 관리자가 사용자 세션과 참조 페이지를 더 효과적으로 분석할 수 있도록 돕는다.
이 형식은 CLF의 모든 필드(host, ident, authuser, date, request, status, bytes)를 그대로 유지하면서, 끝에 Referer와 User-Agent 필드를 덧붙인다. Referer 필드는 사용자가 현재 요청한 페이지로 이동하기 직전에 머물렀던 웹 페이지의 주소를 기록한다. User-Agent 필드는 클라이언트가 사용 중인 웹 브라우저나 봇 등의 소프트웨어 정보를 문자열로 기록한다.
이러한 추가 정보 덕분에 Combined Log Format은 트래픽 출처 분석과 사용자 환경 이해에 매우 유용하다. 예를 들어, 어떤 검색 엔진이나 외부 사이트에서 유입이 발생했는지, 또는 모바일 사용자와 데스크톱 사용자의 비율이 어떻게 되는지 등을 파악할 수 있다. 아파치 HTTP 서버나 Nginx와 같은 주요 웹 서버는 이 형식을 기본적으로 지원하며, 설정을 통해 쉽게 적용할 수 있다.
결과적으로 Combined Log Format은 CLF보다 더 풍부한 데이터를 제공하는 표준 형식으로, 기본적인 접근 통계 분석부터 마케팅 채널 추적에 이르기까지 폭넓게 활용된다.
