Spring boot 如何使用Spring Boot设置log4j2自定义appender?

Spring boot 如何使用Spring Boot设置log4j2自定义appender?,spring-boot,log4j,log4j2,appender,Spring Boot,Log4j,Log4j2,Appender,我在为我的spring boot应用程序创建自定义appender方面面临挑战。将引发以下异常: 2019-11-08 10:33:27,897 main ERROR Unable to locate plugin type for mycustomhandlerclass 2019-11-08 10:33:27,961 main ERROR Unable to locate plugin for mycustomhandlerclass 2019-11-08 10:33:27,961 ma

我在为我的spring boot应用程序创建自定义appender方面面临挑战。将引发以下异常:

2019-11-08 10:33:27,897 main ERROR Unable to locate plugin type for 
mycustomhandlerclass
2019-11-08 10:33:27,961 main ERROR Unable to locate plugin for 
mycustomhandlerclass
2019-11-08 10:33:27,961 main ERROR Unable to invoke factory method in 
class org.apache.logging.log4j.core.config.AppendersPlugin for element 
Appenders: java.lang.NullPointerException java.lang.NullPointerException
Spring启动版本:2.1.7

Maven插件版本:3.1.1

Mycustomhandlerclass.java:

import java.io.Serializable;

import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginElement;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@Plugin(category = "Core", name = "Mycustomhandlerclass", elementType = "appender")
public class Mycustomhandlerclass extends AbstractAppender {

    private final Logger logger = LogManager.getLogger(getClass().getName());

    @SuppressWarnings("deprecation")
    protected AmtAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions) {
        super(name, filter, layout,ignoreExceptions);
        // TODO Auto-generated constructor stub
    }

    @PluginFactory
    public static Mycustomhandlerclass createAppender(@PluginAttribute("name") String name, @PluginAttribute("ignoreExceptions") boolean ignore, @PluginElement("Filter") Filter filter, @PluginElement("Layout") Layout<? extends Serializable> layout) { 
        return new Mycustomhandlerclass(name, filter, layout, ignore);    
    }

    @Override
    public void append(LogEvent event) {
        // TODO Auto-generated method stub
        logger.info("Entered CustomAppender");
    }

}

注意:删除log4j2.properties中的appender引用时,日志将写入log4j2.properties中提到的路径中的文件。因此,问题在于customappender集成

您必须在log4j中添加appender类的包。
packages=org.home.appenders

错误代码如下:-

protected AmtAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions) {
    super(name, filter, layout,ignoreExceptions);
    // TODO Auto-generated constructor stub
}
protected AmtAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions) {
    super(name, filter, layout,ignoreExceptions);
    // TODO Auto-generated constructor stub
}
@SuppressWarnings("deprecation")
protected MyCustomAppender(String name, Filter filter)
{

    super(name, filter, null);
}