diff --git a/lib/NGCP/Panel/Utils/Message.pm b/lib/NGCP/Panel/Utils/Message.pm index 9575f70f20..ad714a68d8 100644 --- a/lib/NGCP/Panel/Utils/Message.pm +++ b/lib/NGCP/Panel/Utils/Message.pm @@ -7,7 +7,7 @@ use DateTime qw(); use DateTime::Format::RFC3339 qw(); use Time::HiRes qw(); -method get_log_params ($self: Catalyst :$c) { +method get_log_params ($self: Catalyst :$c, :$data?) { # get log_tx_id, caller method, remote user, formatted passed parameters # tx_id @@ -17,7 +17,7 @@ method get_log_params ($self: Catalyst :$c) { # package and method my $caller = (caller 2)[3]; $caller !~ /::/ and $caller = (caller 3)[3]; - my $called = ''; + my $called = ''; if ($caller) { my @caller = split('::', $caller); $#caller >= 3 and $called = join('::', @caller[-3...-1]); @@ -36,11 +36,11 @@ method get_log_params ($self: Catalyst :$c) { $r_ip =~ s/^::ffff://; # ipv4 in ipv6 form -> ipv4 # parameters - my $data = Data::Dumper->new([$c->request->parameters]) - ->Terse(1) - ->Dump; - $data =~ s/\n//g; - $data =~ s/\s+/ /g; + my $data_str = Data::Dumper->new([ $data ? $data : $c->request->parameters ]) + ->Terse(1) + ->Dump; + $data_str =~ s/\n//g; + $data_str =~ s/\s+/ /g; unless ($c->config->{logging}->{clear_passwords}) { } @@ -50,45 +50,45 @@ method get_log_params ($self: Catalyst :$c) { called => $called, r_user => $r_user, r_ip => $r_ip, - data => $data, + data => $data_str, }; } -method error ($self: Catalyst :$c, Str :$desc, Str :$log?, :$error?) { +method error ($self: Catalyst :$c, Str :$desc, Str :$log?, :$error?, :$data?) { # we explicitly declare the invocant to skip the validation for Object # because we want a class method instead of an object method - my $log_params = $self->get_log_params(c => $c); + my $log_params = $self->get_log_params(c => $c, data => $data); my $log_msg = ''; my $usr_type = 'error'; my $usr_text = $desc; given (1) { - when (defined $log) - { - $log_msg = $log + when (defined $log) + { + $log_msg = $log } - when (not defined $error) - { + when (not defined $error) + { $log_msg = $desc; } - when (my ($host) = $error =~ /problem connecting to (\S+, port [0-9]+)/ ) + when (my ($host) = $error =~ /problem connecting to (\S+, port [0-9]+)/ ) { $log_msg = "$desc ($error)"; $usr_text = "$desc (A service could not be reached, $host)"; } - when (ref($error) eq "ARRAY" && @$error >= 2 && $error->[1] eq "showdetails" ) + when (ref($error) eq "ARRAY" && @$error >= 2 && $error->[1] eq "showdetails" ) { $log_msg = "$desc (@$error[0])"; $usr_text = "$desc (@$error[0])"; } - when (not $error->isa('DBIx::Class::Exception') ) + when (not $error->isa('DBIx::Class::Exception') ) { $log_msg = "$desc ($error)"; $usr_text = $desc; } - when (my ($dup) = $error =~ /(Duplicate entry \S*)/ ) + when (my ($dup) = $error =~ /(Duplicate entry \S*)/ ) { $log_msg = "$desc ($error)"; $usr_text = "$desc ($dup)"; @@ -101,36 +101,36 @@ method error ($self: Catalyst :$c, Str :$desc, Str :$log?, :$error?) { $log_msg = "$desc ($error)"; } } - + $c->log->error( sprintf <flash(messages => [{ type => $usr_type, - text => sprintf '%s [%s]', - $usr_text, + $c->flash(messages => [{ type => $usr_type, + text => sprintf '%s [%s]', + $usr_text, $log_params->{tx_id}, }]); return; } -method info ($self: Catalyst :$c, Str :$desc, Str :$log?) { +method info ($self: Catalyst :$c, Str :$desc, Str :$log?, :$data?) { # we explicitly declare the invocant to skip the validation for Object # because we want a class method instead of an object method - my $log_params = $self->get_log_params(c => $c); + my $log_params = $self->get_log_params(c => $c, data => $data); my $log_msg = ''; my $usr_type = 'info'; my $usr_text = $desc; given (1) { - when (defined $log) - { - $log_msg = $log + when (defined $log) + { + $log_msg = $log } - default - { + default + { $log_msg = $desc; } }