[log4perl-devel] easy_init problem

2008-08-19 Thread Andrew
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.

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
[email protected]
https://lists.sourceforge.net/lists/listinfo/log4perl-devel


Re: [log4perl-devel] easy_init problem

2008-08-19 Thread Mike Schilli

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
[email protected]
https://lists.sourceforge.net/lists/listinfo/log4perl-devel