There is now some days that I'm spending on java logger: log4j2 The approach is relatively easy if you decide to work on the basis with an .xml file. But in case you want to create the configuration by code, and adapt through java, it is a bit more complicated.
Below the code I could manage for now. I didn't succeed to reconfigure the log level
Each time depth is stopping on error level
2017-03-15 23:24:27,248 [main] ERROR: This is Logger for 1 Error 2017-03-15 23:24:27,256 [main] ERROR: This is Logger 1 Error Can you please help to specify how to reload the programmed log4j2 configuration ?
import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.appender.ConsoleAppender; import org.apache.logging.log4j.core.config.Configurator; import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory; import org.apache.logging.log4j.core.config.builder.api.LayoutComponentBuilder; import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration; public class Log4j2Init { // ------------------------------------------------------- // CONSTRUCTOR // ------------------------------------------------------- public Log4j2Init() { } // ------------------------------------------------------- // TEST // ------------------------------------------------------- public static void main(String[] args) { Logger logger; Log4j2Init log4j2Init = new Log4j2Init(); log4j2Init.addAppenderLogger("./pac-tool.log",Level.ERROR); logger = LogManager.getLogger(Log4j2Init.class.getName()); logger.info("This is Logger for 1 Info"); logger.error("This is Logger for 1 Error"); logger.debug("This is Logger for 1 Debug"); logger.trace("This is Logger for 1 Trace"); // Reconfiguration of log depth log4j2Init.addAppenderLogger("./pac-tool.log",Level.TRACE); logger = LogManager.getLogger(Log4j2Init.class.getName()); logger.info("This is Logger 1 Info"); logger.error("This is Logger 1 Error"); logger.debug("This is Logger 1 Debug"); logger.trace("This is Logger 1 Trace"); } // ------------------------------------------------------- // METHOD // ------------------------------------------------------- public void addAppenderLogger(String filename, Level vlevel ) { ConfigurationBuilder< BuiltConfiguration > builder; LayoutComponentBuilder layoutBuilder; AppenderComponentBuilder appenderBuilder; // Create log4j2 Builder builder = ConfigurationBuilderFactory.newConfigurationBuilder(); builder.setStatusLevel( Level.INFO); builder.setConfigurationName("BuilderTest"); // ------------------------------------------ // CONSOLE // ------------------------------------------ // PatternLayout layoutBuilder = builder.newLayout("PatternLayout") .addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable"); // Create Console Appender : Type = "CONSOLE" appenderBuilder = builder.newAppender("Stdout", "CONSOLE") .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT) .add(layoutBuilder); builder.add( appenderBuilder ); // ------------------------------------------ // FILE // ------------------------------------------ // PatternLayout layoutBuilder = builder.newLayout("PatternLayout") .addAttribute("pattern", "%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"); // Create File Appender : Type = "FILE" appenderBuilder = builder.newAppender("logfile", "FILE") .addAttribute("fileName", filename) .addAttribute("append", "false") .addAttribute("immediateFlush", "false") .add(layoutBuilder); builder.add(appenderBuilder); // create the new logger builder.add( builder.newRootLogger( vlevel ) .add( builder.newAppenderRef( "Stdout" ) ) .add( builder.newAppenderRef( "logfile" ) ) ); Configurator.initialize(builder.build()); } } Thanks