From: Tony B. <log...@tm...> - 2004-01-09 17:23:51
|
On Fri, Jan 09, 2004 at 05:17:02PM +0000, Tony Bowden wrote: > I'm using this in a web environment. By default only things of level > ERROR get logged. However, requests can supply a parameter, which > will switch logging to, for example, INFO level. To clarify, a closer example to what I'm really doing: ------- package My::Foo; use Log::Log4perl ':easy'; sub new { my $class = shift; my $args = shift || {}; Log::Log4perl->easy_init($args->{DEBUG} ? $DEBUG : $ERROR); bless {} => $class; } sub do_it { get_logger()->info("do_it called") } package main; use Test::More tests => 1; Log::Log4perl::init(\q{ screen = Log::Log4perl::Appender::TestBuffer log4perl.category = INFO, BufferApp log4perl.appender.BufferApp = ${screen} log4perl.appender.BufferApp.layout = \ Log::Log4perl::Layout::PatternLayout log4perl.appender.BufferApp.layout.ConversionPattern = %d %F{1} %L> %m %n }); { my $log = Log::Log4perl::Appender::TestBuffer->by_name("BufferApp"); My::Foo->new()->do_it; is $log->buffer, "", "do_it not logged normally"; } { my $log = Log::Log4perl::Appender::TestBuffer->by_name("BufferApp"); My::Foo->new({ DEBUG => 1 })->do_it; like $log->buffer, qr/do_it/, "do_it logged in debug mode"; } ---------- Tony |