Java log4j:自定义appender和从记录器实例访问方法
我有一个自定义的appender,它将LoggingEvents添加到LoggingEvent的ArrayList中,如下所示:Java log4j:自定义appender和从记录器实例访问方法,java,logging,log4j,mule,Java,Logging,Log4j,Mule,我有一个自定义的appender,它将LoggingEvents添加到LoggingEvent的ArrayList中,如下所示: import java.util.ArrayList; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.spi.LoggingEvent; public class PayloadLogAppender extends AppenderSkeleton { private
import java.util.ArrayList;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;
public class PayloadLogAppender extends AppenderSkeleton {
private final ArrayList<LoggingEvent> eventsList = new ArrayList();
@Override
protected void append(LoggingEvent event) {
eventsList.add(event);
}
public void close() {
}
public boolean requiresLayout() {
return false;
}
public ArrayList<LoggingEvent> getAllMessages() {
return this.eventsList;
}
}
现在,在我的应用程序中,我使用getLogger以常规方式访问记录器,
但最后,我想掌握一下事件列表。我已经在appender中创建了getAllMessages方法,并希望在我拥有logger实例时调用该方法。logger.getAllMessage是否是获取eventsList属性引用所需的全部信息?我能够通过以下方式实现此功能:
import mypackage.PayloadLogAppender;
// in the method that gets triggered at the end.
this.LOGGER = Logger.getRootLogger();
Appender payloadlog = this.LOGGER.getAppender("payloadLog");
System.out.println("My list of logging events" + ((PayloadLogAppender) payloadlog).getAllMessage());
谢谢你的指点。当你在最后使用logger.getAllMessages时,你在尝试logger.getAllMessages时看到了什么?我得到了这样的信息:原因:java.lang.Error:未解决的编译问题:getAllMessages方法对于类型logger是未定义的
import mypackage.PayloadLogAppender;
// in the method that gets triggered at the end.
this.LOGGER = Logger.getRootLogger();
Appender payloadlog = this.LOGGER.getAppender("payloadLog");
System.out.println("My list of logging events" + ((PayloadLogAppender) payloadlog).getAllMessage());