LogTrace가 자동 감지하거나 수동 선택으로 분석할 수 있는 로그 포맷 목록입니다. 각 포맷의 예시 라인과 분석 가능한 항목을 확인하세요.
Nginx HTTP Server의 기본 액세스 로그 포맷입니다. Combined Log Format과 JSON 로그를 모두 지원합니다.
예시 라인 (기본 포맷)
203.0.113.42 - - [10/May/2024:03:21:05 +0000] "POST /wp-login.php HTTP/1.1" 401 152 "-" "python-requests/2.28.0" "0.312"
주요 필드
| 필드 | 설명 |
|---|---|
$remote_addr | 클라이언트 IP 주소 |
$time_local | 요청 수신 시각 |
$request | HTTP 메서드, 경로, 프로토콜 |
$status | HTTP 응답 상태 코드 |
$body_bytes_sent | 응답 바이트 수 |
$http_referer | 참조 URL |
$http_user_agent | 클라이언트 User-Agent |
$request_time | 응답 처리 시간 (초) — 포함 시 성능 분석 가능 |
| 필드 | 설명 |
%h | 클라이언트 IP 주소 |
%l | 식별자 (대부분 하이픈) |
%u | 인증된 사용자명 (없으면 하이픈) |
%t | 요청 수신 시각 |
"%r" | 요청 라인 (메서드, 경로, HTTP 버전) |
%>s | 응답 상태 코드 |
%b | 응답 바이트 수 |
"%{Referer}i" | 참조 URL |
"%{User-Agent}i" | 클라이언트 User-Agent |
| 필드 | 설명 |
| type | 요청 프로토콜 (http / https / h2 / ws) |
| time | 요청 수신 시각 (ISO 8601) |
| client:port | 클라이언트 IP와 포트 |
| elb_status_code | ALB 응답 상태 코드 |
| target_status_code | 백엔드 응답 상태 코드 |
| request_processing_time | ALB 처리 시간 (-1은 연결 실패) |
| target_processing_time | 백엔드 처리 시간 |
| request | HTTP 요청 라인 |
| user_agent | User-Agent 문자열 |
| 경로 | 탐지 내용 |
/wp-login.php | 관리자 로그인 반복 접근 (브루트포스) |
/xmlrpc.php | XML-RPC API 브루트포스 및 DDoS 악용 |
/wp-admin/ | 관리자 영역 무단 접근 |
/wp-content/plugins/* | 알려진 플러그인 취약점 탐색 |
/?author=숫자 | 사용자 열거 시도 |
각 필드에 레이블이 붙은 탭 구분 포맷입니다. Nginx에서 LTSV 포맷으로 출력하도록 설정한 경우 자동 감지됩니다.
예시 라인
time:2024-10-10T13:55:36+09:00 host:203.0.113.42 req:GET /index.html HTTP/1.1 status:200 size:1234 ua:Mozilla/5.0 reqtime:0.012
주요 필드(time, remote_addr, request, status, body_bytes_sent, http_user_agent, request_time 등)를 포함한 JSON 로그를 자동 감지합니다.
예시 라인
{"time":"2024-10-10T13:55:36+09:00","remote_addr":"203.0.113.42","request":"GET /api/v1/users HTTP/1.1","status":200,"body_bytes_sent":482,"http_user_agent":"Mozilla/5.0","request_time":0.042}
MongoDB, Go, Java/Log4j, Python logging 등 애플리케이션·데이터베이스가 출력하는 "타임스탬프 + 레벨 + 메시지" 형태의 일반 로그입니다. HTTP 요청 로그가 아니므로 별도 포맷으로 자동 인식되며, 다른 구조화된 포맷(Nginx, CloudFront 등)으로 인식되지 않는 라인에 한해 폴백으로 적용됩니다.
예시 라인 (MongoDB / Go 스타일 — 레벨이 타임스탬프 바로 뒤)
2024-10-10T13:55:36.184+0900 I NETWORK [listener] connection accepted from 203.0.113.42:36538 #15108870 (181 connections now open)
2024-10-10T13:55:37.500+0900 WARN [conn15108870] Connection timeout waiting for lock on database "app"
2024-10-10T13:55:38.900+0900 ERROR [WT] WiredTiger error (28) file open failed: /data/db/collection-0.wt: No such file or directory
예시 라인 (Log4j / Logback 기본 포맷 — 스레드가 레벨보다 앞)
2024-10-10 13:55:36,184 [main] ERROR com.acme.PaymentService - Failed to process payment for order 4821
at com.acme.PaymentService.charge(PaymentService.java:88)
at com.acme.PaymentService.process(PaymentService.java:42)
Caused by: java.net.SocketTimeoutException: Read timed out
예시 라인 (Python logging 기본 포맷)
2024-10-10 13:55:36,184 - root - WARN - Retry attempt 1 for order 4821
인식 조건
YYYY-MM-DD에 T 또는 공백으로 이어지는 HH:MM:SS (밀리초·타임존 옵션)를 지원합니다.[main])이나 - name - 같은 필드가 최대 3개 토큰까지 끼어 있어도 인식합니다. [WARN]처럼 대괄호로 감싼 형태도 지원합니다.TRACE, DEBUG, INFO, WARN/WARNING, ERROR, FATAL/CRITICAL, 또는 MongoDB식 단일 문자(I, W, E, F, D, T)를 인식합니다.at ..., Caused by: ..., Python Traceback 블록 등)은 별도 항목으로 세지 않고, 바로 앞서 열린 로그 항목의 원본 샘플에 이어 붙입니다.위 포맷 외에 자체 정의한 로그 형식이나 보안 장비 로그는 파서 빌더를 통해 직접 분석할 수 있습니다.
지원 정의 방식
$remote_addr $time $method $path $status $bytes 형태로 필드 순서 정의