From: Robert J. <yad...@sn...> - 2007-03-13 19:58:46
|
I'm trying to use the "trigger" function of Buffer, but I can't seem to get it to work. I just took the examples from the perldoc and stuck them together: use Log::Log4perl qw(:easy); my $conf = qq( log4perl.category = DEBUG, Buffer # Regular Screen Appender log4perl.appender.Screen = Log::Log4perl::Appender::Screen log4perl.appender.Screen.stdout = 1 log4perl.appender.Screen.layout = PatternLayout log4perl.appender.Screen.layout.ConversionPattern = %d %p %c %m %n # Buffering appender, using the appender above as outlet log4perl.appender.Buffer = Log::Log4perl::Appender::Buffer log4perl.appender.Buffer.appender = Screen log4perl.appender.Buffer.trigger = sub { \ my($self, $params) = @_; \ return $params->{log4p_level} >= \ $Log::Log4perl::Level::ERROR; } ); Log::Log4perl->init(\$conf); DEBUG("This message gets buffered."); INFO("This message gets buffered also."); # Time passes. Nothing happens. But then ... print "It's GO time!!!\n"; ERROR("This message triggers a buffer flush."); But when I run the above I get: Can't evaluate 'sub {' (Missing right curly or square bracket at (eval 9) line 2, at end of line syntax error at (eval 9) line 2, at EOF ) at /opt/ActivePerl-5.8/lib/site_perl/5.8.7/Log/Log4perl/Config.pm line 741. Even a simple "return 1" doesn't work, i.e.: log4perl.appender.Buffer.trigger = sub {return 1;} Am I missing something simple? (again? :) ) -- Rob |