1use strict;
2use Plack::Test;
3use Test::Requires qw(Log::Log4perl);
4
5use Test::More;
6use Plack::Middleware::Log4perl;
7use HTTP::Request::Common;
8
9my $test_file = "t/Plack-Middleware/log4perl.log";
10
11my $conf = <<CONF;
12log4perl.logger.plack.test = INFO, Logfile
13log4perl.appender.Logfile = Log::Log4perl::Appender::File
14log4perl.appender.Logfile.filename = $test_file
15log4perl.appender.Logfile.layout   = Log::Log4perl::Layout::SimpleLayout
16CONF
17
18Log::Log4perl::init(\$conf);
19
20my $app = sub {
21    my $env = shift;
22    $env->{'psgix.logger'}->({ level => "debug", message => "This is debug" });
23    $env->{'psgix.logger'}->({ level => "info", message => "This is info" });
24    return [ 200, [], [] ];
25};
26
27$app = Plack::Middleware::Log4perl->wrap($app, category => 'plack.test');
28
29test_psgi $app, sub {
30    my $cb = shift;
31    my $res = $cb->(GET "/");
32
33    my $log = do {
34        open my $fh, "<", $test_file;
35        join '', <$fh>;
36    };
37
38    like $log, qr/INFO - This is info/;
39    unlike $log, qr/debug/;
40};
41
42END { unlink $test_file }
43
44done_testing;
45