On Sat, 9 Feb 2008, Kevin M. Goess wrote:
> It's possible, but it's probably less than straightforward. Each
> appender has exactly one layout, so what you'll need to do is create
> two appenders, and use some combination of thresholds and filters so
> that one appender only logs WARN messages and the other appender logs
> everything else.
Exactly, something along these lines:
use Log::Log4perl qw(:easy);
my $conf = q{
log4perl.logger = DEBUG, AppWarn, AppRest
# Filter to match level WARN
log4perl.filter.MatchWarn = Log::Log4perl::Filter::LevelMatch
log4perl.filter.MatchWarn.LevelToMatch = WARN
log4perl.filter.MatchWarn.AcceptOnMatch = true
# Filter to match everything but WARN
log4perl.filter.MatchRest = Log::Log4perl::Filter::LevelMatch
log4perl.filter.MatchRest.LevelToMatch = WARN
log4perl.filter.MatchRest.AcceptOnMatch = false
# Elaborate layout for WARN messages
log4perl.appender.AppRest = Log::Log4perl::Appender::Screen
log4perl.appender.AppRest.layout = PatternLayout
log4perl.appender.AppRest.layout.ConversionPattern = %F-%L %m%n
log4perl.appender.AppRest.Filter = MatchWarn
# Normal layout for the rest
log4perl.appender.AppWarn = Log::Log4perl::Appender::Screen
log4perl.appender.AppWarn.layout = PatternLayout
log4perl.appender.AppWarn.layout.ConversionPattern: %m%n
log4perl.appender.AppWarn.Filter = MatchRest
};
Log::Log4perl->init(\$conf);
DEBUG "debug message";
WARN "warn message";
ERROR "error message";
will print
debug message
./t-38 warn message
error message
-- Mike
Mike Schilli
m...@pe...
|