X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Ftests%2Flog-parser.pl;h=0efe9eab92a8b0cd9779c6bef175c6e4e0f4f909;hb=e2d904d6c935347c105f8543fa3616a85885e32b;hp=256c310f232a0dd13d10d51b1e6c6b5d99ab0a2e;hpb=a1ee27a704cad4619b1444b84c82d38e9c8f508f;p=gosa.git diff --git a/gosa-si/tests/log-parser.pl b/gosa-si/tests/log-parser.pl index 256c310f2..0efe9eab9 100755 --- a/gosa-si/tests/log-parser.pl +++ b/gosa-si/tests/log-parser.pl @@ -21,16 +21,46 @@ use strict; use warnings; use Getopt::Long; +use Data::Dumper; + +my $log_file = "/home/hickert/log.gosa-si-server"; +#my $log_file = "/var/log/gosa-si-server.log"; -my $log_file = "/var/log/gosa-si-server.log"; my $within_session = 0; my $within_incoming = 0; +my $within_header = 0; my $session; my $incoming; +my $header; +my $syslog_state; + +sub check_syslog_state { + my ($line) = @_ ; + if($line =~ /$syslog_state:/ ) { + return $line; + } + return; +} + +sub check_header { + my ($line) = @_ ; + + # new header, set all values back to default + if ($line =~ /INFO: Incoming msg with header/ ) { + $within_header = 0; + } + + if ($line =~ /INFO: Incoming msg with header '$header'/) { + $within_header = 1; + return $line; + } else { + if ($within_header) { return $line; } + } + return; +} sub check_incoming { my ($line) = @_ ; - my @line_list = split(" ", $line); # new incoming msg, set all values back to default if ($line =~ /INFO: Incoming msg with session ID \d+ from/ ) { @@ -41,83 +71,108 @@ sub check_incoming { $within_incoming = 1; return $line; } else { - if ($within_incoming) { - return $line; - } else { - return; - } + if ($within_incoming) { return $line; } } + return; } sub check_session { my ($line) = @_ ; - my @line_list = split(" ", $line); - if (not $line_list[4]) { - if ($within_session) { + if ($line =~ /gosa-si-server (\d+) / ) { + if ((defined $1) && ($1 eq $session)) { return $line; } - return; - } - - if($line_list[4] eq $session) { - $within_session = 1; - return $line; - } else { - $within_session = 0; } return; } + + ### MAIN ###################################################################### GetOptions( - "s|session=s" => \$session, + "s|session=s" => \$session, "i|incoming=s" => \$incoming, + "h|header=s" => \$header, + "l|log=s" => \$syslog_state, ); # check script pram -my $check_script_pram = 0; +my $script_pram = {}; if (defined $session) { print "session: $session\n"; - $check_script_pram++; -} + $script_pram->{'session'} = $session; + } if (defined $incoming) { - print "incoming msg for mac: $incoming\n"; - $check_script_pram++; + print "incoming: $incoming\n"; + $script_pram->{'incoming'} = $incoming; } +if (defined $header) { + print "header: $header\n"; + $script_pram->{'header'} = $header; +} +if (defined $syslog_state) { + print "syslog_state: $syslog_state\n"; + $script_pram->{'syslog_state'} = $syslog_state; +} -if ($check_script_pram == 0) { +if (keys(%$script_pram) == 0) { # print usage and die print "exiting script\n"; exit(0); } open(FILE, "<$log_file") or die "\t can not open log-file"; +my @lines; +my $positive_msg = 0; # Read lines -my $line; -while ($line = ){ +while ( my $line = ){ chomp($line); - my $line2print; - if (defined $session && (not defined $incoming)) { - $line2print = &check_session($line); + + # start of a new message, plot saved log lines + if ($line =~ /INFO: Incoming msg with session ID \d+ from / ) { + if ($positive_msg) { + print "#####################################################\n"; + print join("\n", @lines)."\n"; + } + + $positive_msg = 0; + $within_session = 0; + $within_header = 0; + $within_incoming = 0; + @lines = (); + } + + push (@lines, $line); + + my $positiv_counter = 0; + while (my ($pram, $val) = each %$script_pram) { + if ($pram eq 'session') { + my $l = &check_session($line); + if (defined $l) { $positiv_counter++; } + } + + elsif ($pram eq 'incoming') { + my $l = &check_incoming($line); + if (defined $l) { $positiv_counter++; } + } - } elsif (defined $incoming && (not defined $session)) { - $line2print = &check_incoming($line); + elsif ($pram eq 'header') { + my $l = &check_header($line); + if (defined $l) { $positiv_counter++; } + } - } elsif ((defined $incoming) && (defined $session)) { - my $line1 = &check_session($line); - my $line2 = &check_incoming($line); - if ((defined $line1) && (defined $line2)) { - $line2print = $line; + elsif ($pram eq 'syslog_state') { + my $l = &check_syslog_state($line); + if (defined $l) { $positiv_counter++; } } } - # printing - if (defined $line2print) { - print "$line\n"; + if (keys(%$script_pram) == $positiv_counter) { + $positive_msg = 1; } - + }