On Mon, 26 Jan 2009, Manoj Wanzare wrote:

>      3) DEBUG mode should have an option of either writing to Screen
>         or debuglog file or both

I presume that 'debug mode' is a mode your application is in, so it
would be available in a variable of the program? If so, you can attach
a filter to each appender and have it check if the appender is supposed
to fire or not:

  log4perl.category = DEBUG, Logfile, Screen

  log4perl.appender.Logfile = Log::Log4perl::Appender::File
  log4perl.appender.Logfile.filename = test.log
  log4perl.appender.Logfile.layout = \
    Log::Log4perl::Layout::SimpleLayout
  log4perl.appender.Logfile.Filter = LogFileFilter

  log4perl.appender.Screen = Log::Log4perl::Appender::Screen
  log4perl.appender.Screen.layout = \
    Log::Log4perl::Layout::SimpleLayout
  log4perl.appender.Screen.Filter = ScreenFilter

  log4perl.filter.ScreenFilter  = \
   sub { my %p = @_; $p{log4p_level} eq "INFO" or $main::debug_mode_to_screen }
  log4perl.filter.LogFileFilter = \
   sub { my %p = @_; $p{log4p_level} eq "INFO" or $main::debug_mode_to_file }

The Log::Log4perl::Filter docs show more details. You probably want to
write a custom Log::Log4perl::Filter to keep the filter logic separate
from the Log4perl configuration file. In the config above, if you set

     our $debug_mode_to_screen = 0;
     our $debug_mode_to_file   = 0;

in the main program, nothing will happen with debug messages (but still 
with info messages).

>      4) Option to replicate debug log messages in system-wide
>         logging if debug log is turned of.

Hmm, I need some clarification on this one -- what exactly do you want
to replicate?

-- Mike

Mike Schilli
m...@perlmeister.com

> I am a new user of log4perl and to this mailing list. I am working
> on a perl project - want to incorporate Log4perl as main logging
> framework. The requirement is as below:
>
>      1) Wrapper over Log4perl
>      2) System-wide Logging to File & Screen in INFO mode
>      3) DEBUG mode should have an option of either writing to Screen
>         or debuglog file or both
>      4) Option to replicate debug log messages in system-wide
>         logging if debug log is turned of.
>
>  Creating a package and using a log4 conf file with rootLogger in
>  INFO mode and Logfile and Screen as appenders take care of
>  requirement 1&2 however option third and fourth is tricky to
>  incorporate. I have tried Filter match etc but cannot seem to get
>  my head around effectively incorporating requirement 3 & 4.


------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
log4perl-devel mailing list
log4perl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/log4perl-devel

Reply via email to