On Tue, 19 Aug 2008, Andrew wrote:
As I understand it, calling the following:
Log::Log4perl->easy_init({ level => $DEBUG },
{ level => $INFO,
file => ">> log.log" });
should create two loggers, the first logging DEBUG and up messages to
stderr and the second logging INFO and up to a file called log.log.
Unfortunately, having the same logger (the root logger in your case) use
two different log levels for two appenders involves a filter/threshold
and cannot be done with in easy mode.
The configuration file version of your easy mode setup would look
something like this:
log4perl.logger = INFO, screen, file
log4perl.appender.screen = Log::Log4perl::Appender::Screen
log4perl.appender.screen.layout = SimpleLayout
log4perl.appender.file = Log::Log4perl::Appender::File
log4perl.appender.file.filename = foo.log
log4perl.appender.file.layout = SimpleLayout
and if you want to send messages with a level of DEBUG and up to the
screen and messages higher or equal than INFO to a file, you need to
open up the logger for DEBUG messages and reduce the exposure of the
file appender to INFO via an appender threshold setting:
log4perl.logger = DEBUG, screen, file
log4perl.appender.screen = Log::Log4perl::Appender::Screen
log4perl.appender.screen.layout = SimpleLayout
log4perl.appender.file = Log::Log4perl::Appender::File
log4perl.appender.file.filename = foo.log
log4perl.appender.file.layout = SimpleLayout
log4perl.appender.file.Threshold = INFO
Unfortunately, there's no way to do that in easy mode yet unless you're
using two different loggers (categories):
Log::Log4perl->easy_init( { level => $INFO,
file => ">>test.log",
category => "Bar::Twix",
layout => ā%F{1}-%L-%M: %m%nā
{ level => $DEBUG,
file => "STDOUT",
category => "Bar::Mars",
layout => ā%m%nā },
);
-- Mike
Mike Schilli
[EMAIL PROTECTED]
While this does create two loggers, one logging to stderr and one to a
file, both loggers get whatever level is set last, no matter how I
arrange this list of hashes.
Any idea what's going on here? I'm using Log4perl 1.17.
Here's a simple script showing this behavior:
#! /usr/bin/perl
use strict;
use warnings;
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init({ level => $DEBUG },
{ level => $INFO,
file => ">> log.log" });
my $log = Log::Log4perl::get_logger();
$log->debug("debug line");
$log->info("info line");
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
log4perl-devel mailing list
log4perl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/log4perl-devel