Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j:自定义appender和从记录器实例访问方法_Java_Logging_Log4j_Mule - Fatal编程技术网

Java log4j:自定义appender和从记录器实例访问方法

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

我有一个自定义的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 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());