From eb4db48d0e65a3c7c23b7372566fa7121f0cd574 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Sun, 18 Apr 2010 11:46:33 +0200 Subject: some dancer specific panel for debugging --- lib/Plack/Middleware/Debug/Dancer/Logger.pm | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lib/Plack/Middleware/Debug/Dancer/Logger.pm (limited to 'lib/Plack/Middleware/Debug/Dancer/Logger.pm') diff --git a/lib/Plack/Middleware/Debug/Dancer/Logger.pm b/lib/Plack/Middleware/Debug/Dancer/Logger.pm new file mode 100644 index 0000000..3fdc4e9 --- /dev/null +++ b/lib/Plack/Middleware/Debug/Dancer/Logger.pm @@ -0,0 +1,49 @@ +package Plack::Middleware::Debug::Dancer::Logger; +use 5.008; +use strict; +use warnings; +use parent qw(Plack::Middleware::Debug::Base); +use Dancer::Logger; +use Class::Method::Modifiers qw(install_modifier); +our $VERSION = '0.07'; + +# XXX Not thread/Coro/AE safe. Should use $c->env or something +my $psgi_env; +install_modifier 'Dancer::Logger', 'around', 'warning' => sub { + my $orig = shift; + my $self = shift; + $psgi_env->{'plack.middleware.dancer_log'} .= "[warning] $_[0]\n"; + $self->$orig(@_); +}; + +install_modifier 'Dancer::Logger', 'around', 'error' => sub { + my $orig = shift; + my $self = shift; + $psgi_env->{'plack.middleware.dancer_log'} .= "[error] $_[0]\n"; + $self->$orig(@_); +}; + +install_modifier 'Dancer::Logger', 'around', 'debug' => sub { + my $orig = shift; + my $self = shift; + $psgi_env->{'plack.middleware.dancer_log'} .= "[debug] $_[0]\n"; + $self->$orig(@_); +}; + +sub run { + my($self, $env, $panel) = @_; + $psgi_env = $env; + + return sub { + my $res = shift; + + my $log = delete $env->{'plack.middleware.dancer_log'}; + if ($log) { + $panel->content("
$log
"); + } + $psgi_env = undef; + }; +} + +1; +__END__ -- cgit v1.2.3