X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FLXDebug.pm;h=553ab5037c0679d8f72ef3020e9db99a37c8cfae;hb=b8ee6b6ed46e55095b955ee1800b8a4b8d8ccc3f;hp=d98d36a1af304393727f158475aef27e5f346b40;hpb=e855756795da07e79807b8cf1a31cfea8d253d61;p=kivitendo-erp.git diff --git a/SL/LXDebug.pm b/SL/LXDebug.pm index d98d36a1a..553ab5037 100644 --- a/SL/LXDebug.pm +++ b/SL/LXDebug.pm @@ -24,6 +24,7 @@ use YAML; use SL::Request (); use strict; +use utf8; my ($text_diff_available); @@ -129,10 +130,10 @@ sub show_backtrace { return 1 unless ($force || ($global_level & BACKTRACE_ON_ERROR)); - $self->message(BACKTRACE_ON_ERROR, "Starting full caller dump:"); + $self->message(0, "Starting full caller dump:"); my $level = 0; while (my ($dummy, $filename, $line, $subroutine) = caller $level) { - $self->message(BACKTRACE_ON_ERROR, " ${subroutine} from ${filename}:${line}"); + $self->message(0, " ${subroutine} from ${filename}:${line}"); $level++; } @@ -213,6 +214,17 @@ sub dump_sql_result { $self->message($level, $prefix . sprintf('(%d row%s)', scalar @{ $results }, scalar @{ $results } > 1 ? 's' : '')); } +sub dump_object { + my ($self, $level, $text, $object) = @_; + + my $copy; + if ($object) { + $copy->{$_} = $object->$_ for $object->meta->columns; + } + + $self->dump($level, $text, $copy); +} + sub show_diff { my ($self, $level, $item1, $item2, %params) = @_; @@ -249,7 +261,8 @@ sub is_tracing_enabled { sub _write { no warnings; my ($self, $prefix, $message) = @_; - my $date = strftime("%Y-%m-%d %H:%M:%S $$ [" . getppid() . "] ${prefix}: ", localtime(time())); + my @now = gettimeofday(); + my $date = strftime("%Y-%m-%d %H:%M:%S." . sprintf('%03d', int($now[1] / 1000)) . " $$ [" . getppid() . "] ${prefix}: ", localtime($now[0])); local *FILE; chomp($message); @@ -261,6 +274,7 @@ sub _write_raw { local *FILE; if ((FILE_TARGET == $self->{"target"}) && open(FILE, ">>", $self->{"file"})) { + binmode FILE, ":utf8"; print FILE $message; close FILE; @@ -292,7 +306,12 @@ sub end_request { sub log_time { my ($self, @slurp) = @_; return 1 unless want_request_timer(); - $self->_write("time", $self->get_request_time() . (@slurp ? " (@slurp)" : '')); + + my $now = $self->get_request_time; + my $diff = int((($now - ($self->{previous_log_time} // 0)) * 10_000 + 5) / 10); + $self->{previous_log_time} = $now; + + $self->_write("time", "${now}s Δ ${diff}ms" . (@slurp ? " (@slurp)" : '')); } sub get_request_time { @@ -350,7 +369,7 @@ sub log_request { my $template = <