Skip to content
Snippets Groups Projects
Commit 54c158d9 authored by Andreas Romeyke's avatar Andreas Romeyke
Browse files

- moved colorize_...() functions to TA.pm

parent f9828c38
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,8 @@ use Carp qw( croak ); ...@@ -9,6 +9,8 @@ use Carp qw( croak );
use feature qw(say); use feature qw(say);
use Regexp::Optimizer; use Regexp::Optimizer;
use IO::Zlib; use IO::Zlib;
use Text::CSV_PP;
# ABSTRACT: main module for ta-tool # ABSTRACT: main module for ta-tool
our %config; our %config;
...@@ -64,6 +66,87 @@ sub sru_search { ...@@ -64,6 +66,87 @@ sub sru_search {
} }
} }
{
my $bred = "\e[1;31m";
my $red = "\e[31m";
my $green = "\e[32m";
my $blue = "\e[34m";
my $bblue = "\e[1;34m";
my $gray = "\e[90m]";
my $reversed = "\e[7m";
my $reset = "\e[0m";
my $back_yellow = "\e[103m";
my $back_cyan = "\e[45m";
my $back_green = "\e[43m";
my $datetime_rx=qr/\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d,\d\d\d/;
sub colorize {
my $line = shift;
my $opt = shift;
my $match_rx = shift;
# patterns in common interest:
$line =~ s/^($datetime_rx)/${blue}$1${reset}/;
if ($opt->{match} ne ".*") {
$line =~ s/( (DEBUG|INFO|WARN|ERROR) .*?)($match_rx)/$1${reversed}$3${reset}/; # order important!
}
$line =~ s/ (DEBUG) / ${gray}$1${reset} /
|| $line =~ s/ (INFO) / ${green}$1${reset} /
|| $line =~ s/ (WARN) / ${red}$1${reset} /
|| $line =~ s/ (ERROR) / ${bred}$1${reset} /;
$line =~ s/(SIP ?\d+)/${back_yellow}$1${reset}/g;
$line =~ s/(IE ?\d+)/${back_yellow}$1${reset}/g;
$line =~ s/(dc.identifier)/${back_cyan}$1${reset}/g;
return $line;
}
sub colorize_trace {
my $line = shift;
my $deposit_dir = shift;
my $deposit_id = shift;
my $sip_id = shift;
my $ie_pid = shift;
my $rep_id = shift;
# patterns in common interest:
$line =~ s/^($datetime_rx)/${blue}$1${reset}/;
$line =~ s/ (DEBUG) / ${gray}$1${reset} /
|| $line =~ s/ (INFO) / ${green}$1${reset} /
|| $line =~ s/ (WARN) / ${red}$1${reset} /
|| $line =~ s/ (ERROR) / ${bred}$1${reset} /;
if (defined $deposit_dir) {$line =~ s/($deposit_dir)/${back_green}$1${reset}/g;}
if (defined $deposit_id ) {$line =~ s/(dep_|Deposit Activity ID=|depositId=)($deposit_id)/$1${back_green}$2${reset}/g;}
if (defined $sip_id ) {$line =~ s/((sipId|SIP|PID|pid)[ =]?)($sip_id)/$1${back_green}$2${reset}/g;}
if (defined $ie_pid ) {$line =~ s/(IE ?)($ie_pid)/$1${back_green}$2${reset}/g;}
if (defined $rep_id ) {$line =~ s/(Representation )($rep_id)/$1${back_green}$2${reset}/g;}
return $line;
}
}
{
my $csv;
sub csv {
my $line = shift;
my $opt = shift;
my $match_rx = shift;
my $ret;
if (!defined $csv) {
$csv = Text::CSV_PP->new(
{
sep_char => ";",
}
);
$ret=join(";", qw(date time level where msg))."\n";
}
my $date_rx=qr/\d\d\d\d-\d\d-\d\d/;
my $time_rx=qr/\d\d:\d\d:\d\d,\d\d\d/;
my $level_rx=qr/DEBUG|INFO|WARN|ERROR/;
my $where_rx=qr/\[.*?\]/;
my $msg_rx=qr/.*$/;
$line =~ m/^($date_rx) ($time_rx) ($level_rx) ($where_rx) ($msg_rx)/;
$csv->combine($1, $2, $3, $4, $5);
$ret.= $csv->string;
}
}
sub helper_scan_log { sub helper_scan_log {
my $directory = shift; my $directory = shift;
my $fh_processing = shift; my $fh_processing = shift;
...@@ -86,6 +169,8 @@ sub helper_scan_log { ...@@ -86,6 +169,8 @@ sub helper_scan_log {
sub trace_log { sub trace_log {
my $with_trace=shift; my $with_trace=shift;
my $with_color=shift;
my $output_filter=shift;
my $directory = path($config{logdir}); my $directory = path($config{logdir});
my $deposit_id; my $deposit_id;
my $deposit_dir; my $deposit_dir;
...@@ -101,10 +186,23 @@ sub trace_log { ...@@ -101,10 +186,23 @@ sub trace_log {
# 3. ... SIP 13156, Deposit Activity ID=17589Properties # 3. ... SIP 13156, Deposit Activity ID=17589Properties
my $sip_rx = qr/(SIP |sipId=)/; my $sip_rx = qr/(SIP |sipId=)/;
my $pre_rx = qr/\d{4}-\d\d-\d\d \d\d:\d\d:\d\d,\d\d\d INFO .*/; my $date_rx = qr/\d{4}-\d\d-\d\d \d\d:\d\d:\d\d,\d\d\d/;
my $line_rx1= Regexp::Optimizer->new->optimize(qr{^$pre_rx.*(originalDirName=|depositId=|$sip_rx)$searchid}); my $pre_rx = qr/$date_rx INFO .*/;
my $line_rx2= Regexp::Optimizer->new->optimize(qr{^$pre_rx.*(SIP |Deposit Activity ID=)$searchid}); my $line_rx1 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*(originalDirName=|depositId=|$sip_rx)$searchid});
my $line_rx3= Regexp::Optimizer->new->optimize(qr{^$pre_rx.*Loaded \d+ files for: .*$searchid}); my $line_rx2 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*(SIP |Deposit Activity ID=)$searchid});
my $line_rx3 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*Loaded \d+ files for: .*$searchid});
my $line_rx4 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*((Representation $searchid IE \d+)|(Representation \d+ IE $searchid)) Copy ID: \d+});
if ($with_trace =~ m/^SIP/) { # search specific sip
$line_rx1 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*($sip_rx)$searchid});
$line_rx2 = $line_rx1;
} elsif ($with_trace =~ m/^IE/) { # search specific IE
$line_rx3 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*Loaded \d+ files for: REP\d+ \(IE$searchid\)});
$line_rx4 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*Representation \d+ IE $searchid Copy ID: \d+});
} elsif ($with_trace =~ m/^REP/) {
$line_rx3 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*Loaded \d+ files for: REP$searchid \(IE\d+\)});
$line_rx4 = Regexp::Optimizer->new->optimize(qr{^$pre_rx.*Representation $searchid IE \d+ Copy ID: \d+});
}
# my $search_rxo = Regexp::Optimizer->new->optimize(qr/^$date_rx [^ ]* $level_rx (.*?)$match_rx(.*?)$/); # my $search_rxo = Regexp::Optimizer->new->optimize(qr/^$date_rx [^ ]* $level_rx (.*?)$match_rx(.*?)$/);
my $fh_processing_stage1 = sub { my $fh_processing_stage1 = sub {
my $fh = shift; my $fh = shift;
...@@ -117,25 +215,58 @@ sub trace_log { ...@@ -117,25 +215,58 @@ sub trace_log {
if (! m/$searchid/) {next;} if (! m/$searchid/) {next;}
chomp; chomp;
if ( m/$line_rx1/ ) { if ( m/$line_rx1/ ) {
if (!defined $deposit_dir and m/originalDirName=([^,]*),/) { $deposit_dir = $1; }
if (!defined $sip_id and m/$sip_rx(\d{6}),/) { $sip_id = "SIP" . $2; } if (!defined $sip_id and m/$sip_rx(\d{6}),/) { $sip_id = "SIP" . $2; }
if (!defined $deposit_dir and m/originalDirName=([^,]*),/) { $deposit_dir = $1; }
if (!defined $deposit_id and m/depositId=(\d{6}),/) { $deposit_id = $1;} if (!defined $deposit_id and m/depositId=(\d{6}),/) { $deposit_id = $1;}
} elsif (m/$line_rx2/) { } elsif (m/$line_rx2/) {
if (!defined $deposit_id and m/Deposit Activity ID=(\d{6})/) { $deposit_id = $1;}
if (!defined $sip_id and m/SIP (\d{6})/) { $sip_id = $1;} if (!defined $sip_id and m/SIP (\d{6})/) { $sip_id = $1;}
if (!defined $deposit_id and m/Deposit Activity ID=(\d{6})/) { $deposit_id = $1;}
} elsif (m/$line_rx3/) { } elsif (m/$line_rx3/) {
if (!defined $rep_id and m/Loaded \d+ files for: (REP\d+)/) { $rep_id = $1;}
if (!defined $ie_pid and m/Loaded \d+ files for: REP\d+ \((IE\d+)/) { $ie_pid = $1;} if (!defined $ie_pid and m/Loaded \d+ files for: REP\d+ \((IE\d+)/) { $ie_pid = $1;}
if (!defined $rep_id and m/Loaded \d+ files for: (REP\d+)/) { $rep_id = $1;}
} elsif (m/$line_rx4/) {
my $rx = qr/Representation (\d{6}) IE (\d{6})/;
if (!defined $ie_pid and m/$rx/) { $ie_pid = $2;}
if (!defined $rep_id and m/$rx/) { $rep_id = $1;}
} }
} }
return 1; return 1;
}; };
helper_scan_log($directory, $fh_processing_stage1); helper_scan_log($directory, $fh_processing_stage1);
no warnings;
my $match= "found: DIR=$deposit_dir, DEPOSITID=$deposit_id, SIPID=$sip_id, IEPID=$ie_pid, REPID=$rep_id"; my $match= "found: DIR=$deposit_dir, DEPOSITID=$deposit_id, SIPID=$sip_id, IEPID=$ie_pid, REPID=$rep_id";
use warnings;
say "$match"; say "$match";
say "-"x(length($match)); say "-"x(length($match));
# now call scan_log and use own colorizer # now call scan_log and use own colorizer
if ($with_color) {
$output_filter = sub {colorize_trace($_[0], $deposit_dir, $deposit_id, $sip_id, $ie_pid, $rep_id)};
}
my $fh_processing_stage2 = sub { my $fh_processing_stage2 = sub {
my $fh = shift;
no warnings;
my $nextline_rx1= Regexp::Optimizer->new->optimize(qr{originalDirName=$deposit_dir|(depositID|Deposit Activity ID)[= ]$deposit_id|(sipId|SIP[= ]?)$sip_id});
my $nextline_rx2=Regexp::Optimizer->new->optimize(qr{IE[ ]?$ie_pid|REP[ ]?$rep_id});
use warnings;
while(<$fh>) {
if (
(
defined $deposit_dir
and defined $deposit_id
and defined $sip_id
and !m/$nextline_rx1/
) or (
defined $ie_pid
and defined $rep_id
and !m/$nextline_rx2/
)
) {
next;
}
chomp;
my $line = $output_filter->( $_ );
say $line;
}
}; };
helper_scan_log($directory, $fh_processing_stage2); helper_scan_log($directory, $fh_processing_stage2);
} }
...@@ -155,11 +286,11 @@ sub scan_log { ...@@ -155,11 +286,11 @@ sub scan_log {
my $fh_processing = sub { my $fh_processing = sub {
my $fh = shift; my $fh = shift;
while(<$fh>) { while(<$fh>) {
chomp;
if (! m/$search_rxo/) { if (! m/$search_rxo/) {
#print "no match for '$_'"; #print "no match for '$_'";
next; next;
} }
chomp;
my $line = $output_filter->( $_ ); my $line = $output_filter->( $_ );
say $line; say $line;
} }
......
...@@ -5,7 +5,6 @@ use feature qw(say); ...@@ -5,7 +5,6 @@ use feature qw(say);
use Regexp::Optimizer; use Regexp::Optimizer;
use DateTime; use DateTime;
use DateTime::Format::DateParse; use DateTime::Format::DateParse;
use Text::CSV_PP;
use SLUB::LZA::Rosetta::TA -command; use SLUB::LZA::Rosetta::TA -command;
...@@ -100,64 +99,6 @@ sub create_regex_from_to { ...@@ -100,64 +99,6 @@ sub create_regex_from_to {
my $rxo = Regexp::Optimizer->new->optimize(qr/$date_rx_string/); my $rxo = Regexp::Optimizer->new->optimize(qr/$date_rx_string/);
return $rxo; return $rxo;
} }
{
my $bred = "\e[1;31m";
my $red = "\e[31m";
my $green = "\e[32m";
my $blue = "\e[34m";
my $bblue = "\e[1;34m";
my $gray = "\e[90m]";
my $reversed = "\e[7m";
my $reset = "\e[0m";
my $back_yellow = "\e[103m";
my $back_cyan = "\e[45m";
my $datetime_rx=qr/\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d,\d\d\d/;
sub colorize {
my $line = shift;
my $opt = shift;
my $match_rx = shift;
# patterns in common interest:
$line =~ s/^($datetime_rx)/${blue}$1${reset}/;
if ($opt->{match} ne ".*") {
$line =~ s/( (DEBUG|INFO|WARN|ERROR) .*?)($match_rx)/$1${reversed}$3${reset}/; # order important!
}
$line =~ s/ (DEBUG) / ${gray}$1${reset} /
|| $line =~ s/ (INFO) / ${green}$1${reset} /
|| $line =~ s/ (WARN) / ${red}$1${reset} /
|| $line =~ s/ (ERROR) / ${bred}$1${reset} /;
$line =~ s/(SIP ?\d+)/${back_yellow}$1${reset}/g;
$line =~ s/(IE ?\d+)/${back_yellow}$1${reset}/g;
$line =~ s/(dc.identifier)/${back_cyan}$1${reset}/g;
return $line;
}
}
{
my $csv;
sub csv {
my $line = shift;
my $opt = shift;
my $match_rx = shift;
my $ret;
if (!defined $csv) {
$csv = Text::CSV_PP->new(
{
sep_char => ";",
}
);
$ret=join(";", qw(date time level where msg))."\n";
}
my $date_rx=qr/\d\d\d\d-\d\d-\d\d/;
my $time_rx=qr/\d\d:\d\d:\d\d,\d\d\d/;
my $level_rx=qr/DEBUG|INFO|WARN|ERROR/;
my $where_rx=qr/\[.*?\]/;
my $msg_rx=qr/.*$/;
$line =~ m/^($date_rx) ($time_rx) ($level_rx) ($where_rx) ($msg_rx)/;
$csv->combine($1, $2, $3, $4, $5);
$ret.= $csv->string;
}
}
sub execute { sub execute {
my ($self, $opt, $args) = @_; my ($self, $opt, $args) = @_;
...@@ -186,9 +127,14 @@ sub execute { ...@@ -186,9 +127,14 @@ sub execute {
my $with_trace; my $with_trace;
if (defined $opt->trace_sip) { if (defined $opt->trace_sip) {
$with_trace = $opt->trace_sip; $with_trace = $opt->trace_sip;
SLUB::LZA::Rosetta::TA::trace_log($with_trace); if (defined $opt->colorize) {
$output_filter = sub { colorize($_[0], $opt, $match_rx); };
} else {
$output_filter=sub { $_[0]; };
}
SLUB::LZA::Rosetta::TA::trace_log($with_trace, $opt->colorize, $output_filter);
} else { } else {
SLUB::LZA::Rosetta::TA::scan_log($date_rx, $level_rx, $match_rx, $output_filter, $with_trace); SLUB::LZA::Rosetta::TA::scan_log($date_rx, $level_rx, $match_rx, $output_filter);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment