| RegexEventEvaluator.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.logging.appender;
import java.util.HashMap;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.TriggeringEventEvaluator;
import gnu.regexp.RE;
import gnu.regexp.REException;
/** An implementation of the log4j TriggeringEventEvaluator that matches the
* LoggingEvent message against the MDB{RegexEventEvaluator} regular
* expression.
* @author Scott.Stark@jboss.org
* @version $Revision: 1.4 $
*/
public class RegexEventEvaluator implements TriggeringEventEvaluator
{
/** A cache HashMap<String, RE> of previously compiled REs */
private HashMap regexMap = new HashMap();
/** Lookup the current MDC 'RegexEventEvaluator' to determine the regular
* expression context that should be applied to determine if the logging
* event should be considered a triggering event. If there is no value
* for the 'RegexEventEvaluator' key then no comparision is made.
*
* @param event the logging event to check
* @return true if MDC{RegexEventEvaluator} is a regex expression that
* matches the event.getRenderedMessage(), false otherwise.
*/
public boolean isTriggeringEvent(LoggingEvent event)
{
String regex = (String) event.getMDC("RegexEventEvaluator");
boolean isTriggeringEvent = false;
if( regex != null )
{
// Look for a cached regex pattern
RE re = (RE) regexMap.get(regex);
if( re == null )
{
try
{
re = new RE(regex);
regexMap.put(regex, re);
}
catch (REException e)
{
}
}
if( re != null )
{
String msg = event.getRenderedMessage();
if( msg != null )
isTriggeringEvent = re.isMatch(msg);
}
}
return isTriggeringEvent;
}
}
| RegexEventEvaluator.java |