Greetings, I have been trying to get the programmatic configuration working (on top of the file based configuration), but it doesn't seem to merge them together. Here is the meat of the plugin code. /tmp/xpose.log gets created, and also the output from the programmatic configuration /tmp/customconfig.xml gets created and looks as expected. However when I try to get the configured logger in the code it appears use the ones inherited from the root logger. Also, the example code in the documentation doesn't seem to reflect the newer builder API.
https://logging.apache.org/log4j/2.x/manual/customconfig.html class CustomConfiguration extends XmlConfiguration{ public CustomConfiguration(final LoggerContext loggercontext, final ConfigurationSource confsource){ super(loggercontext,confsource); } @Override protected void doConfigure(){ super.doConfigure(); ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); AppenderComponentBuilder apbuilder = builder.newAppender("XPOSE","File").addAttribute("fileName","/tmp/xpose.log"); builder.add(apbuilder); LoggerComponentBuilder lgbuilder = builder.newLogger("customlogger",Level.INFO).addAttribute("additivity","false"); lgbuilder.add(builder.newAppenderRef("XPOSE")); builder.add(lgbuilder); try{ File opt = new File("/tmp/customconfig.xml"); FileOutputStream fop = new FileOutputStream(opt); builder.writeXmlConfiguration(fop); builder.build(); }catch(FileNotFoundException e){ System.out.println(e.getMessage()); }catch(IOException e){ System.out.println(e.getMessage()); } } } Output of programmatic configuration. <?xml version="1.0" ?> <Configuration> <Appenders> <File name="XPOSE" fileName="/tmp/xpose.log"/> </Appenders> <Loggers> <Logger name="customlogger" level="INFO" additivity="false"> <AppenderRef ref="XPOSE"/> </Logger> </Loggers> </Configuration>