That's got it.  Thanks muchly.

Thomas Erskine
Consultant | Technology
2000 Barrington St | Suite 300 | Floor 04
Halifax, NS B3J3K1
Phone: +1 902 442-4709
[EMAIL PROTECTED]
 

> -----Original Message-----
> From: Mike Schilli [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, October 30, 2008 3:19 PM
> To: Erskine, Thomas (IT)
> Cc: Mike Schilli; log4perl-devel@lists.sourceforge.net
> Subject: RE: [log4perl-devel] activating appenders
> 
> On Thu, 30 Oct 2008, Erskine, Thomas (IT) wrote:
> 
> > The problem with setting a threshold on the appender to 
> cause it not 
> > ot log is that I don't see a way to programmatically set 
> the threshold 
> > to a specific level.  It can be bumped up or down, but that 
> requires 
> > the program to know where the threshold was set in the 
> configuration.
> > I.E.  configuration in the program, which I'm trying to avoid.
> 
> It's a bit tricky because you need access to Log4perl's 
> appender wrapper, not the appender itself:
> 
> "The previously mentioned method "appender_by_name()" returns 
> a refer- rence to the real appender object. If you want 
> access to the wrapper class (e.g. if you want to modify the 
> appender’s threshold), use the hash 
> $Log::Log4perl::Logger::APPENDER_BY_NAME{...} instead, which 
> holds references all appender wrapper objects." [perldoc 
> Log::Log4perl]
> 
> So, if you have a disabled appender like
> 
>      log4perl.appender.SCREEN=Log::Log4perl::Appender::Screen
>      log4perl.appender.SCREEN.layout = SimpleLayout
>      log4perl.appender.SCREEN.Threshold = OFF
> 
> in your configuration, you can retrieve its threshold setting via
> 
>      my $app = $Log::Log4perl::Logger::APPENDER_BY_NAME{"SCREEN"};
>      my $threshold = $app->threshold();
> 
> and print it out like
> 
>      print "Threshold set to ",
>            Log::Log4perl::Level::to_level( $threshold ),
>            "\n";
> 
> If you want to enable the appender, set
> 
>      $threshold = $app->threshold( $ALL );
> 
> If you want to disable it again, set
> 
>      $threshold = $app->threshold( $OFF );
> 
> -- Mike
> 
> Mike Schilli
> [EMAIL PROTECTED]
> 
> >
> > The best I've been able to come up with is to define a 
> logger with a 
> > threshold which won't log, call it deactivated, and assign this 
> > appender to it.  Then to activate this appender, I can use 
> > appender_by_name(...) and get_root_logger()->add_appender(...).  It 
> > took me a while to find it as get_root_logger is only defined on 
> > Log::Log4perl::Logger, not in Log::Log4perl.
> >
> > Thomas Erskine
> > Consultant | Technology
> > 2000 Barrington St | Suite 300 | Floor 04 Halifax, NS B3J3K1
> > Phone: +1 902 442-4709
> > [EMAIL PROTECTED]
> >
> >
> >> -----Original Message-----
> >> From: Mike Schilli [mailto:[EMAIL PROTECTED]
> >> Sent: Wednesday, October 29, 2008 5:29 PM
> >> To: Erskine, Thomas (IT)
> >> Cc: log4perl-devel@lists.sourceforge.net
> >> Subject: Re: [log4perl-devel] activating appenders
> >>
> >> On Wed, 29 Oct 2008, Erskine, Thomas (IT) wrote:
> >>
> >>> I want to be able to define an appender in the log4perl
> >> config file,
> >>> but not activated and then activate it programmatically However,
> >>> Log::Log4perl->appender_by_name('SCREENDEBUG') returns undef.
> >>>
> >>> I guess I could add SCREENDEBUG to the log4perl.logger line
> >> and define
> >>> it with a threshold which won't log anything and then bump the
> >>> threshold up at runtime, but it seems wrong somehow.
> >>
> >> An appender that's not assigned to any logger in the
> >> configuration is ignored by Log4perl at this point -- I think
> >> that using a threshold, as you've suggested, is a perfectly
> >> valid solution, though.
> >>
> >> Alternatively, you can define the appender programmatically
> >> and add it to the logger via add_appender().
> >>
> >> -- Mike
> >>
> >> Mike Schilli
> >> [EMAIL PROTECTED]
> >>
> > --------------------------------------------------------
> >
> > NOTICE: If received in error, please destroy and notify 
> sender. Sender does not intend to waive confidentiality or 
> privilege. Use of this email is prohibited when received in error.
> >
>
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does not 
intend to waive confidentiality or privilege. Use of this email is prohibited 
when received in error.

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

Reply via email to