Index: log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java (date 1475431991000) +++ log4j-core/src/main/java/org/apache/logging/log4j/core/util/DefaultShutdownCallbackRegistry.java (revision ) @@ -72,8 +72,13 @@ for (final Runnable hook : hooks) { try { hook.run(); - } catch (final Throwable t) { - LOGGER.error(SHUTDOWN_HOOK_MARKER, "Caught exception executing shutdown hook {}", hook, t); + } catch (final Throwable t1) { + try { + LOGGER.error(SHUTDOWN_HOOK_MARKER, "Caught exception executing shutdown hook {}", hook, t1); + } catch (final Throwable t2) { + System.err.println("Caught exception logging exception"); + t1.printStackTrace(); + } } } state.set(State.STOPPED); Index: log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java (date 1475431991000) +++ log4j-core/src/main/java/org/apache/logging/log4j/core/LoggerContext.java (revision ) @@ -54,6 +54,7 @@ import org.apache.logging.log4j.spi.LoggerContextFactory; import org.apache.logging.log4j.spi.LoggerRegistry; import org.apache.logging.log4j.spi.Terminable; +import org.apache.logging.log4j.util.LoaderUtil; import org.apache.logging.log4j.util.PropertiesUtil; /** @@ -70,6 +71,15 @@ public static final String PROPERTY_CONFIG = "config"; private static final Configuration NULL_CONFIGURATION = new NullConfiguration(); + + static { + try { + // LOG4J2-1642 preload ExecutorServices as it is used in shutdown hook + LoaderUtil.loadClass(ExecutorServices.class.getName()); + } catch (final Exception e) { + LOGGER.error("Failed to preload ExecutorServices class.", e); + } + } private final LoggerRegistry loggerRegistry = new LoggerRegistry<>(); private final CopyOnWriteArrayList propertyChangeListeners = new CopyOnWriteArrayList<>();