|
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
|