diff --git a/lib/Plack/Middleware/Debug/WgLogger.pm b/lib/Plack/Middleware/Debug/WgLogger.pm new file mode 100644 index 000000000..94d0e2d51 --- /dev/null +++ b/lib/Plack/Middleware/Debug/WgLogger.pm @@ -0,0 +1,31 @@ +package Plack::Middleware::Debug::WgLogger; +use strict; +use parent qw(Plack::Middleware::Debug::Base); +our $VERSION = '0.07'; + +# This will be moved to the WebGUI::Middleware::Debug::WgLogger namespace +# once Plack::Middleware::Debug supports that + +sub run { + my ($self, $env, $panel) = @_; + + my $logger = $env->{'psgix.logger'}; + + my $log_output = []; + $env->{'psgix.logger'} = sub { + my $args = shift; + push @$log_output, $args->{level} => $args->{message}; + $logger && $logger->($args); + }; + delete $env->{'webgui.session'}->{_errorHandler}; + + return sub { + my $res = shift; + $panel->nav_subtitle(scalar @$log_output . " messages"); + $panel->content($self->render_list_pairs($log_output)); + }; +} + +sub panel_name { 'WebGUI Log' } + +1; \ No newline at end of file diff --git a/lib/WebGUI/Middleware/Session.pm b/lib/WebGUI/Middleware/Session.pm index 37eb67fac..5deb0189f 100644 --- a/lib/WebGUI/Middleware/Session.pm +++ b/lib/WebGUI/Middleware/Session.pm @@ -63,7 +63,7 @@ sub call { if ($debug) { $app = Plack::Middleware::StackTrace->wrap($app); $app = Plack::Middleware::Debug->wrap( $app, - panels => [qw(Environment Response Timer Memory Session DBITrace PerlConfig Response)] ); + panels => [qw(Environment Response Timer Memory Session DBITrace PerlConfig Response WgLogger)] ); } # Turn exceptions into HTTP errors