diff --git a/lib/Plack/Middleware/Debug/Logger.pm b/lib/Plack/Middleware/Debug/Logger.pm new file mode 100644 index 000000000..d1fea0017 --- /dev/null +++ b/lib/Plack/Middleware/Debug/Logger.pm @@ -0,0 +1,45 @@ +package Plack::Middleware::Debug::Logger; +use 5.008; +use strict; +use warnings; +use parent qw(Plack::Middleware::Debug::Base); +use Sub::Uplevel (); +our $VERSION = '0.07'; + +sub run { + my ($self, $env, $panel) = @_; + + my $wrap_logger = $env->{'psgix.logger'}; + my %output; + $env->{'psgix.logger'} = sub { + my ($args) = @_; + my $caller = (caller(1))[3] . '[' . (caller(0))[2] . '] '; + my $message = $args->{message}; + $message =~ s/\n\s*/\n /msxg; + $message =~ s/\n?\z/\n/msx; + $output{lc $args->{level}} ||= ''; + $output{lc $args->{level}} .= $caller . $message; + if ($wrap_logger) { + Sub::Uplevel::uplevel 1, $wrap_logger, @_; + } + }; + + return sub { + my $res = shift; + + if ($wrap_logger) { + $env->{'psgix.logger'} = $wrap_logger; + } + my $content = ''; + for my $level ( qw(info debug warn error fatal) ) { + if ($output{$level}) { + $content .= "
Something unexpected happened that caused this system to fault.
-$message
-$stack-$debug -END_HTML - } - else { - # NOTE: You can't internationalize this because with some types of errors that would cause an infinite loop. - my $company = $self->session->setting->get("companyName"); - my $email = $self->session->setting->get("companyEmail"); - my $url = $self->session->setting->get("companyURL"); - - $error = <