package org.obo.annotation.view;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
import org.bbop.framework.AbstractComponentFactory;
import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
public class LogViewComponentFactory extends AbstractComponentFactory<LogViewComponent> {
private final LogViewAppender appender = new LogViewAppender();
public LogViewComponentFactory() {
super();
this.appender.setThreshold(Level.INFO);
Logger.getRootLogger().addAppender(this.appender);
}
@Override
public LogViewComponent doCreateComponent(String id) {
return new LogViewComponent(id, this.appender);
}
@Override
public FactoryCategory getCategory() {
return FactoryCategory.INFO;
}
@Override
public String getID() {
return "log_view_component";
}
@Override
public String getName() {
return "Error Log";
}
@Override
public boolean isSingleton() {
return true;
}
/**
* This appender just collects all received log messages into an EventList.
* @author jim
*/
public static class LogViewAppender extends AppenderSkeleton {
private final EventList<LoggingEvent> messages = new BasicEventList<LoggingEvent>();
@Override
protected void append(LoggingEvent event) {
this.messages.add(event);
}
public EventList<LoggingEvent> getMessages() {
return this.messages;
}
@Override
public void close() {}
@Override
public boolean requiresLayout() {
return false;
}
}
}