http://qs1969.pair.com?node_id=1154953

hellosarathy has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I have a Log::Log4perl logger configured which writes to STDOUT, SYSLOG and Logfile, like:

my %loggerConfig = ( "log4perl.category.default_logger" => "INFO, Stdout, SYSLOG, Logfile",
which writes to STDOUT, SYSLOG and Logfile. Few messages I need to write ONLY to the log file and NOT to syslog and STDOUT. How can this be done?

Thanks.

Replies are listed 'Best First'.
Re: How to pick an appender selectively in Log::Log4perl
by Arunbear (Prior) on Feb 11, 2016 at 17:12 UTC
    Create a separate category that only writes to Logfile
    my %loggerConfig = ( "log4perl.category.default_logger" => "INFO, Stdout, SYSLOG, Logfile +", "log4perl.category.file.only" => "INFO, Logfile", );
    Then to use it:
    my $log = Log::Log4perl->get_logger("file.only"); $log->info('whatever');
      Thanks.
Re: How to pick an appender selectively in Log::Log4perl
by crusty_collins (Friar) on Feb 11, 2016 at 16:59 UTC
    You can select what you want. I would do it like this.
    my $log_conf = qq( log4perl.rootLogger = DEBUG, LOG log4perl.appender.LOG = Log::Log4perl::Appender: +:File log4perl.appender.LOG.filename = $ref->{config}->{Log} log4perl.appender.LOG.mode = append log4perl.appender.LOG.layout = Log::Log4perl::Layout::P +atternLayout log4perl.appender.LOG.layout.ConversionPattern = %d %p %m %n );
    "We can't all be happy, we can't all be rich, we can't all be lucky – and it would be so much less fun if we were. There must be the dark background to show up the bright colours." Jean Rhys (1890-1979)