package org.marketcetera.util.test;
import java.util.LinkedList;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.spi.LoggingEvent;
/**
* Retains logging events to a memory list, for use by tests that need
* to confirm generation of such events.
*
* @author tlerios@marketcetera.com
* @since 0.5.0
* @version $Id: MemoryAppender.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class MemoryAppender
extends AppenderSkeleton
{
// INSTANCE DATA.
private PatternLayout mLayout=new PatternLayout("%C"); //$NON-NLS-1$
private LinkedList<LoggingEvent> mEvents=new LinkedList<LoggingEvent>();
// AppenderSkeleton.
@Override
protected void append
(LoggingEvent event)
{
// A side-effect of formatting is that the location
// information of the event is set.
mLayout.format(event);
mEvents.add(event);
}
@Override
public void close() {}
@Override
public boolean requiresLayout()
{
return false;
}
// INSTANCE METHODS.
/**
* Returns all events retained by the receiver.
*
* @return The events.
*/
public LinkedList<LoggingEvent> getEvents()
{
return mEvents;
}
/**
* Clears the receiver's list of retained events.
*/
public void clear()
{
getEvents().clear();
}
}