From: David C. <dpc...@ho...> - 2011-09-19 19:56:02
|
log4perl-devel: I'm working on a web application and would like to log TRACE priority messages related to hits from my development machine (IP address 192.168.0.34). This is the relevant portion of my configuration file: 2011-09-19 12:31:51 dpchrist@p43400e ~ $ grep TraceApp perl-src/50-Dpchrist-CMS/demo/conf/log4perl.conf log4perl.logger = TRACE, InfoApp, TraceApp log4perl.appender.TraceApp = Log::Log4perl::Appender::File log4perl.appender.TraceApp.filename = sub { $ENV{REMOTE_ADDR} eq '192.168.0.34' ? $Mysite::CONF{-log_dir} . '/trace.log' : '/dev/null' } log4perl.appender.TraceApp.mode = append log4perl.appender.TraceApp.layout = PatternLayout log4perl.appender.TraceApp.layout.ConversionPattern = %d{yyyyMMdd-HHmmss.SSS} %p %M (%F{1} %L) %m{chomp}%n log4perl.appender.TraceApp.Threshold = TRACE I would prefer to enable/ disable TraceApp based on $ENV{REMOTE_ADDR} rather than doing all the work and throwing non-192.168.0.34 hits down /dev/null, but I couldn't figure out how to implement this idea. Is there a better way? TIA, David |
From: Kevin G. <cp...@go...> - 2011-09-20 07:03:28
|
David, one way you can do this is by attaching a filter to your TraceApp appender, like this log4perl.filter.NotIfDevIP = sub { $ENV{REMOTE_ADDR} eq '192.168.0.34' ? 0 : 1 } log4perl.appender.TraceApp.Filter = NotIfDevIP See 'perldoc Log::Log4perl::Filter' On Mon, Sep 19, 2011 at 9:39 PM, David Christensen < dpc...@ho...> wrote: > log4perl-devel: > > I'm working on a web application and would like to log TRACE priority > messages related to hits from my development machine (IP address > 192.168.0.34). This is the relevant portion of my configuration file: > > 2011-09-19 12:31:51 dpchrist@p43400e ~ > $ grep TraceApp perl-src/50-Dpchrist-CMS/demo/conf/log4perl.conf > log4perl.logger = TRACE, InfoApp, TraceApp > log4perl.appender.TraceApp = Log::Log4perl::Appender::File > log4perl.appender.TraceApp.filename = sub { $ENV{REMOTE_ADDR} eq > '192.168.0.34' ? $Mysite::CONF{-log_dir} . '/trace.log' : '/dev/null' } > log4perl.appender.TraceApp.mode = append > log4perl.appender.TraceApp.layout = PatternLayout > log4perl.appender.TraceApp.layout.ConversionPattern = > %d{yyyyMMdd-HHmmss.SSS} %p %M (%F{1} %L) %m{chomp}%n > log4perl.appender.TraceApp.Threshold = TRACE > > > I would prefer to enable/ disable TraceApp based on $ENV{REMOTE_ADDR} > rather than doing all the work and throwing non-192.168.0.34 hits down > /dev/null, but I couldn't figure out how to implement this idea. > > > Is there a better way? > |
From: David C. <dpc...@ho...> - 2011-09-20 19:41:23
|
On 09/19/2011 11:37 PM, Kevin Goess wrote: > See 'perldoc Log::Log4perl::Filter' On 09/20/2011 12:20 AM, Mike Schilli wrote: > The Log::Log4perl::Filter manpage explains their use in detail. That solved it. Thanks! :-) 2011-09-20 12:38:06 dpchrist@p43400e ~ $ grep Trace perl-src/50-Dpchrist-CMS/demo/conf/log4perl.conf log4perl.logger = TRACE, InfoApp, TraceApp log4perl.filter.TraceFilter = sub {$ENV{REMOTE_ADDR} eq $Mysite::CONF{-trace_ip}} log4perl.appender.TraceApp = Log::Log4perl::Appender::File log4perl.appender.TraceApp.filename = sub { File::Spec::Functions::catfile($Mysite::CONF{-log_dir}, 'trace.log') } log4perl.appender.TraceApp.Filter = TraceFilter log4perl.appender.TraceApp.mode = append log4perl.appender.TraceApp.layout = PatternLayout log4perl.appender.TraceApp.layout.ConversionPattern = %d{yyyyMMdd-HHmmss.SSS} %p %M (%F{1} %L) %m{chomp}%n log4perl.appender.TraceApp.Threshold = TRACE David |
From: Mike S. <m...@pe...> - 2011-09-20 07:41:44
|
On Mon, 19 Sep 2011, David Christensen wrote: > I would prefer to enable/ disable TraceApp based on $ENV{REMOTE_ADDR} > rather than doing all the work and throwing non-192.168.0.34 hits down > /dev/null, but I couldn't figure out how to implement this idea. Hi David, you can use Log4perl's custom filters. If you add log4perl.filter.MyFilter = sub { $ENV{REMOTE_ADDR} eq '192.168.0.34' } log4perl.appender.TraceApp.Filter = MyFilter to your configuration, it'll suppress all messages to the appender that aren't from your test client. The Log::Log4perl::Filter manpage explains their use in detail. Hope that helps! -- -- Mike Mike Schilli m...@pe... > log4perl-devel: > > I'm working on a web application and would like to log TRACE priority > messages related to hits from my development machine (IP address > 192.168.0.34). This is the relevant portion of my configuration file: > > 2011-09-19 12:31:51 dpchrist@p43400e ~ > $ grep TraceApp perl-src/50-Dpchrist-CMS/demo/conf/log4perl.conf > log4perl.logger = TRACE, InfoApp, TraceApp > log4perl.appender.TraceApp = Log::Log4perl::Appender::File > log4perl.appender.TraceApp.filename = sub { $ENV{REMOTE_ADDR} eq > '192.168.0.34' ? $Mysite::CONF{-log_dir} . '/trace.log' : '/dev/null' } > log4perl.appender.TraceApp.mode = append > log4perl.appender.TraceApp.layout = PatternLayout > log4perl.appender.TraceApp.layout.ConversionPattern = > %d{yyyyMMdd-HHmmss.SSS} %p %M (%F{1} %L) %m{chomp}%n > log4perl.appender.TraceApp.Threshold = TRACE > > |