X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FLXDebug.pm;h=a1e19767c7599a37b82f03d5817d3fefac9d95c9;hb=abafb475d9742e3a6c28427477235c923b21eeef;hp=28a36bfff6f235b0cd8e811172611d02f5d9b1fe;hpb=65b2387a54494a8cbc1d011602ae3f8d7208ea4d;p=kivitendo-erp.git diff --git a/SL/LXDebug.pm b/SL/LXDebug.pm index 28a36bfff..a1e19767c 100644 --- a/SL/LXDebug.pm +++ b/SL/LXDebug.pm @@ -19,8 +19,9 @@ use constant FILE_TARGET => 0; use constant STDERR_TARGET => 1; use Data::Dumper; +use List::MoreUtils qw(all); use POSIX qw(strftime getpid); -use Scalar::Util qw(blessed refaddr weaken); +use Scalar::Util qw(blessed refaddr weaken looks_like_number); use Time::HiRes qw(gettimeofday tv_interval); use SL::Request (); use SL::YAML; @@ -161,6 +162,7 @@ sub clone_for_dump { my ($src, $dumped) = @_; return undef if !defined($src); + return $src if !ref($src); $dumped ||= {}; my $addr = refaddr($src); @@ -230,8 +232,14 @@ sub dump_sql_result { map { $column_lengths{$_} = length $row->{$_} if (length $row->{$_} > $column_lengths{$_}) } keys %{ $row }; } + my %alignment; + foreach my $column (keys %column_lengths) { + my $all_look_like_number = all { (($_->{$column} // '') eq '') || looks_like_number($_->{$column}) } @{ $results }; + $alignment{$column} = $all_look_like_number ? '' : '-'; + } + my @sorted_names = sort keys %column_lengths; - my $format = join '|', map { '%' . $column_lengths{$_} . 's' } @sorted_names; + my $format = join '|', map { '%' . $alignment{$_} . $column_lengths{$_} . 's' } @sorted_names; $prefix .= ' ' if $prefix; @@ -325,7 +333,7 @@ sub _write_raw { sub level2string { no warnings; # use $_[0] as a bit mask and return levelstrings separated by / - join '/', qw(info debug1 debug2 query trace error_call_trace request_timer WARNING)[ grep { (reverse split //, sprintf "%08b", $_[0])[$_] } 0..7 ] + join '/', qw(info debug1 debug2 query trace error_call_trace request_timer request WARNING trace2 show_caller)[ grep { (reverse split //, sprintf "%011b", $_[0])[$_] } 0..11 ] } sub begin_request {