|
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
|