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