Log4J2无法解决自定义Appender

时间:2019-07-26 16:21:02

标签: java spring spring-boot log4j log4j2

我有一个简单的自定义JSON布局,我想在Log4J2中实现。根据他们的文档,我创建了以下类(为简便起见,省略了一些方法)。

@Plugin(name = "CustomJSONLayout", category = "Core", elementType = "layout", printObject = true)
public class MyCustomLayout extends AbstractStringLayout {

  @PluginFactory
  public static MyCustomLayout createLayout(
      @PluginAttribute(value = "charset", defaultString = "UTF-8") Charset charset,
      @PluginAttribute(value = "pretty") boolean pretty,
      @PluginAttribute(value = "pretty-exceptions", defaultBoolean = true) boolean prettyExceptions) {
    return new MyCustomLayout(charset, pretty, prettyExceptions);
  }

}

当我在IntelliJ中本地运行或通过maven clean install运行它时,它会使用我的自定义布局记录到控制台,而不会出现任何问题。

但是,当我尝试将其作为独立的Jar java -jar ...运行时,会出现以下错误:

2019-07-26 17:13:27,435 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.ConsoleAppender for element Console: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.ConsoleAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.ConsoleAppender

然后它抱怨找不到插件文件。奇怪的是,每当我在IDE(INtelliJ)中运行它时,我都不会遇到这个问题,所以我不确定是什么原因造成的。

我不知道是什么导致了这种奇怪的行为。有人建议这可能是Spring类加载器接管的方式,但到目前为止,我还没有找到解决方案。

0 个答案:

没有答案