LogFormat "%h %l %u %t \"%r\" %>s %b" common
...
CustomLog "/private/var/log/apache2/access_log" common
####
#!/usr/bin/env perl
use strict;
use warnings;
# LogFormat "%h %l %u %t \"%r\" %>s %b" common
my $re = qr{
^
( \S+ ) # capture remote host (%h)
\s+
( \S+ ) # capture remote logname (%l)
\s+
( \S+ ) # capture remote user (%u)
\s+
\[
( [^\]]+ ) # capture request time (%t) without brackets
\]
\s+
"
( (?: [^"\\]++ | \\. )*+ ) # capture first line of request (%r)
"
\s+
( \d+ ) # capture final status (%>s)
\s+
( \d+ ) # capture response size in bytes (%b)
$
}x;
my $format = join '',
"Host: %s\n",
"Logname: %s\n",
"User: %s\n",
"Time: %s\n",
"Request: %s\n",
"Status: %d\n",
"Size: %d\n\n";
printf $format, /$re/ while ;
__DATA__
127.0.0.1 - - [22/Apr/2015:13:35:04 +1000] "GET /bin/admin.pl HTTP/1.1" 401 509
127.0.0.1 - ken [22/Apr/2015:13:35:21 +1000] "GET /bin/admin.pl HTTP/1.1" 500 656
127.0.0.1 - - [24/Apr/2015:04:51:49 +1000] "GET / HTTP/1.1" 200 45
####
Host: 127.0.0.1
Logname: -
User: -
Time: 22/Apr/2015:13:35:04 +1000
Request: GET /bin/admin.pl HTTP/1.1
Status: 401
Size: 509
Host: 127.0.0.1
Logname: -
User: ken
Time: 22/Apr/2015:13:35:21 +1000
Request: GET /bin/admin.pl HTTP/1.1
Status: 500
Size: 656
Host: 127.0.0.1
Logname: -
User: -
Time: 24/Apr/2015:04:51:49 +1000
Request: GET / HTTP/1.1
Status: 200
Size: 45