Hi all, We use log4j2, version 2.11.1, and have programmatic configuration because we don't know until runtime what the logging settings are. For instance, log directory for file logging, or syslog settings if that's used instead.
I can provide the code we use to set things up if it helps, but don't know if that's needed given description/exceptions below. Our problem is that the Configurator.initialize(builder.build()) step doesn't throw exceptions back to us. Our builder is: ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder() Instead, it outputs stack traces to std err (or out), so we have large stack traces at startup instead of a message what we would provide to the end user. Worse, no exception is thrown back to our code, so we start up anyway, except with no logging any more once we get to the point that std out/err are supposed to go to our logs. The culprit is PluginBuilder#build, around line 128: } catch (final Exception e) { LOGGER.error("Could not create plugin of type {} for element {}: {}", this.clazz, node.getName(), (e instanceof InvocationTargetException ? ((InvocationTargetException) e).getCause() : e).toString(), e); } The stacks output are below. Is there anything I can change to not have log4j2 print stack traces, and more importantly find out that something went wrong so we know to not keep running? Thanks, Bobby Output at startup for a simple case like the log directory (for file logging) not being writeable: 11/13/19 3:27:39 PM 2019-11-13 15:27:39,457 main ERROR FileManager (/root/efm.log) java.io.FileNotFoundException: /root/efm.log (Permission denied) java.io.FileNotFoundException: /root/efm.log (Permission denied) 11/13/19 3:27:39 PM at java.io.FileOutputStream.open0(Native Method) 11/13/19 3:27:39 PM at java.io.FileOutputStream.open(FileOutputStream.java:270) 11/13/19 3:27:39 PM at java.io.FileOutputStream.<init>(FileOutputStream.java:213) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory.createManager(FileManager.java:422) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory.createManager(FileManager.java:406) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileManager.getFileManager(FileManager.java:180) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileAppender$Builder.build(FileAppender.java:95) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileAppender$Builder.build(FileAppender.java:51) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:204) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:161) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:57) 11/13/19 3:27:39 PM at [our code that is initializing the logging] 11/13/19 3:27:39 PM 11/13/19 3:27:39 PM 2019-11-13 15:27:39,469 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.FileAppender for element File: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory@7c83dc97] unable to create manager for [/root/efm.log] with data [org.apache.logging.log4j.core.appender.FileManager$FactoryData@7748410a] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory@7c83dc97] unable to create manager for [/root/efm.log] with data [org.apache.logging.log4j.core.appender.FileManager$FactoryData@7748410a] 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:115) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileManager.getFileManager(FileManager.java:180) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileAppender$Builder.build(FileAppender.java:95) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.appender.FileAppender$Builder.build(FileAppender.java:51) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:204) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:161) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:57) 11/13/19 3:27:39 PM at [our code that is initializing the logging] 11/13/19 3:27:39 PM 11/13/19 3:27:39 PM 2019-11-13 15:27:39,470 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.FileAppender for element File: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.FileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.FileAppender 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:235) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:204) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:161) 11/13/19 3:27:39 PM at org.apache.logging.log4j.core.config.builder.impl.DefaultConfigurationBuilder.build(DefaultConfigurationBuilder.java:57) 11/13/19 3:27:39 PM at [our code that is initializing the logging] 11/13/19 3:27:39 PM 11/13/19 3:27:39 PM 2019-11-13 15:27:39,470 main ERROR Null object returned for File in Appenders. 11/13/19 3:27:39 PM 2019-11-13 15:27:39,474 main ERROR Unable to locate appender "file" for logger config "[our logger]" 11/13/19 3:27:39 PM 2019-11-13 15:27:39,474 main ERROR Unable to locate appender "file" for logger config "[other logger used in 3rd party lib]"