diff options
author | franck cuny <franck@lumberjaph.net> | 2010-04-18 11:46:33 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-04-18 11:46:33 +0200 |
commit | eb4db48d0e65a3c7c23b7372566fa7121f0cd574 (patch) | |
tree | 733db3456f1b81203f4c8663f7b0c304854bb474 /lib/Plack/Middleware/Debug/Dancer/Logger.pm | |
parent | initial commit (diff) | |
download | dancer-debug-eb4db48d0e65a3c7c23b7372566fa7121f0cd574.tar.gz |
some dancer specific panel for debugging
Diffstat (limited to 'lib/Plack/Middleware/Debug/Dancer/Logger.pm')
-rw-r--r-- | lib/Plack/Middleware/Debug/Dancer/Logger.pm | 49 |
1 files changed, 49 insertions, 0 deletions
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("<pre>$log</pre>"); + } + $psgi_env = undef; + }; +} + +1; +__END__ |