Event type
Apache Common Log Format
Standard HTTP access logs with basic request information
Apache HTTP Server Common Log Format (CLF) access logs recording basic HTTP request information including client IP, authenticated user, timestamp, request details, and response status
Overview
What this event covers
Records all HTTP requests to the Apache web server in the standardized Common Log Format (CLF), including client IP, authenticated user (if any), timestamp, HTTP request method and URI, status code, and response size. This is the most widely-used and standardized Apache log format.
When generated
- ›Every HTTP/HTTPS request received by the Apache web server
- ›GET, POST, PUT, DELETE, HEAD, OPTIONS, and other HTTP methods
- ›Both successful requests and errors (2xx, 3xx, 4xx, 5xx status codes)
- ›Requests to static content, dynamic pages, and APIs
- ›Legacy systems and simple web servers often use CLF instead of Combined format
Security relevance
HighCompliance
Frequency notes
High-frequency events during business hours (900 events/hour or ~4 per second) with reduced activity during nights (120 events/hour) and weekends (150 events/hour). Common Log Format is typically used for simpler web servers, static content servers, or legacy applications.
Resources
Docs and tools
Generation
Configuration
- Base frequency
- 300 events/hour
- Time patterns
- business_hours night_hours weekend
- Business hours
- 3.0x
- Night hours
- 0.4x
- Weekend
- 0.5x
Schema
Field definitions
Field reference for this event type — types, requirements, examples, and allowed values.
client_ip
IP address of the client making the request
Source: random_private_ip()
IPv4 or IPv6192.168.1.100ident
RFC 1413 identity of the client (typically '-' as ident lookups are rarely used)
Source: random_choice(['-', registry.get_random_user().username])
Identity string or '-'-authenticated_user
Username of authenticated user, or '-' if not authenticated via HTTP Basic Authentication
Source: random_choice(['-', registry.get_random_user().username])
Username or '-'jsmithtimestamp
Date and time of the request in Apache's standard format
Source: now() | format_datetime('%d/%b/%Y:%H:%M:%S %z')
DD/Mon/YYYY:HH:MM:SS Timezone20/Dec/2025:15:31:10 -0600request_method
HTTP request method
Source: random_choice(['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'])
HTTP method verbGET-
GETRetrieve resource -
POSTSubmit data to server -
PUTUpdate existing resource -
DELETERemove resource -
HEADRetrieve headers only -
OPTIONSCheck allowed methods
request_uri
URI path and query string of the request
Source: random_choice of common web paths
URI path/index.htmlhttp_version
HTTP protocol version used for the request
Source: random_choice(['1.1', '2.0'])
HTTP/x.xHTTP/1.1-
HTTP/1.1HTTP version 1.1 (most common) -
HTTP/2.0HTTP version 2.0
status_code
HTTP response status code returned by the server
Source: random_weighted selection favoring successful responses
3-digit HTTP status code200-
200OK - Successful request -
201Created - Resource created successfully -
204No Content - Successful with no response body -
301Moved Permanently - Resource moved -
302Found - Temporary redirect -
304Not Modified - Cached resource still valid -
400Bad Request - Invalid request syntax -
401Unauthorized - Authentication required -
403Forbidden - Access denied -
404Not Found - Resource not found -
500Internal Server Error - Server error -
502Bad Gateway - Upstream server error -
503Service Unavailable - Server temporarily unavailable
response_size
Size of response in bytes, not including HTTP headers (0 or '-' if no content sent)
Source: random_int(0, 500000)
Bytes2326