#
# http://www.fabiankeil.de/sourcecode/privoxy-log-parser/
#
-# $Id: privoxy-log-parser.pl,v 1.136 2012/07/27 17:42:39 fabiankeil Exp $
+# $Id: privoxy-log-parser.pl,v 1.140 2012/10/21 13:00:36 fabiankeil Exp $
#
# TODO:
# - LOG_LEVEL_CGI, LOG_LEVEL_ERROR, LOG_LEVEL_WRITE content highlighting
$c = highlight_matched_host($c, '(?<=to )[^\s]+');
- } elsif ($c =~ m/^accepted connection from .*/ or
+ } elsif ($c =~ m/^[Aa]ccepted connection from .*/ or
$c =~ m/^OK/) {
- # accepted connection from 10.0.0.1 on socket 5
+ # Privoxy 3.0.20:
+ # Accepted connection from 10.0.0.1 on socket 5
+ # Privoxy between 3.0.20 and 3.0.6:
+ # accepted connection from 10.0.0.1( on socket 5)?
# Privoxy 3.0.6 and earlier just say:
# OK
$c = highlight_matched_host($c, '(?<=connection from )[^ ]*');
} elsif ($c =~ m/^Closing client socket/) {
# Closing client socket 5. Keep-alive: 0, Socket alive: 1. Data available: 0.
+ # Privoxy 3.0.20 and later
+ # Closing client socket 8. Keep-alive: 1. Socket alive: 0. Data available: 0. \
+ # Configuration file change detected: 0. Requests received: 11.
+
$c = highlight_matched_pattern($c, 'Number', '(?<=socket )\d+');
$c = highlight_matched_pattern($c, 'Number', '(?<=Keep-alive: )\d+');
$c = highlight_matched_pattern($c, 'Number', '(?<=Socket alive: )\d+');
$c = highlight_matched_pattern($c, 'Number', '(?<=available: )\d+');
+ $c = highlight_matched_pattern($c, 'Number', '(?<=detected: )\d+');
+ $c = highlight_matched_pattern($c, 'Number', '(?<=received: )\d+');
} elsif ($c =~ m/^write header to: .* failed:/) {
$c =~ s@(?<=received: )(\d+)@$h{'Number'}$1$h{'Standard'}@;
$c =~ s@(?<=read: )(\d+)@$h{'Number'}$1$h{'Standard'}@;
- } elsif ($c =~ m/^Continuing buffering headers/) {
+ } elsif ($c =~ m/^Continuing buffering (?:server )?headers/) {
# Continuing buffering headers. byte_count: 19. header_offset: 517. len: 536.
$c =~ s@(?<=byte_count: )(\d+)@$h{'Number'}$1$h{'Standard'}@;
$c =~ s@(?<=header_offset: )(\d+)@$h{'Number'}$1$h{'Standard'}@;
$c =~ s@(?<=len: )(\d+)@$h{'Number'}$1$h{'Standard'}@;
- # 3.0.15 and later:
- # Continuing buffering headers. Bytes most recently read: %d.
+ # 3.0.15 up to 3.0.19:
+ # Continuing buffering headers. Bytes most recently read: 498.
$c =~ s@(?<=read: )(\d+)@$h{'Number'}$1$h{'Standard'}@;
+ # 3.0.20 and later:
+ # Continuing buffering server headers from socket 5. Bytes most recently read: 498.
+ $c =~ s@(?<=socket )(\d+)@$h{'Number'}$1$h{'Standard'}@;
} elsif ($c =~ m/^Received \d+ bytes while/) {
} elsif ($c =~ m/^Waiting for the next client request/ or
$c =~ m/^The connection on server socket/ or
- $c =~ m/^Client request arrived in time /) {
+ $c =~ m/^Client request (?:\d+ )?arrived in time /) {
# Waiting for the next client request on socket 3. Keeping the server \
# socket 12 to a.fsdn.com open.
# The connection on server socket 6 to upload.wikimedia.org isn't reusable. Closing.
- # Used by Privoxy 3.0.18 and later:
+ # Privoxy 3.0.20 and later:
+ # Client request 4 arrived in time on socket 7.
+ # Used by Privoxy 3.0.18 and 3.0.19:
# Client request arrived in time on socket 21.
# Used by earlier version:
# Client request arrived in time or the client closed the connection on socket 12.
+ $c =~ s@(?<=request )(\d+)@$h{'Number'}$1$h{'Standard'}@;
$c =~ s@(?<=on socket )(\d+)@$h{'Number'}$1$h{'Standard'}@;
$c =~ s@(?<=server socket )(\d+)@$h{'Number'}$1$h{'Standard'}@;
$c = highlight_matched_host($c, '(?<=to )[^\s]+');