Use LoaderUtil instead of Class.forName().
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/2a27b69c Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/2a27b69c Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/2a27b69c Branch: refs/heads/LOG4J2-1278-gc-free-logger Commit: 2a27b69c652a39c9ae0997e3482f93ab9917e4b8 Parents: 3ce537b Author: Matt Sicker <[email protected]> Authored: Sun Feb 21 21:39:09 2016 -0600 Committer: Matt Sicker <[email protected]> Committed: Sun Feb 21 21:39:09 2016 -0600 ---------------------------------------------------------------------- .../main/java/org/apache/logging/log4j/spi/AbstractLogger.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2a27b69c/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java index 238b05c..ceac52f 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java @@ -30,6 +30,7 @@ import org.apache.logging.log4j.message.ParameterizedMessageFactory; import org.apache.logging.log4j.message.StringFormattedMessage; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.LambdaUtil; +import org.apache.logging.log4j.util.LoaderUtil; import org.apache.logging.log4j.util.MessageSupplier; import org.apache.logging.log4j.util.PropertiesUtil; import org.apache.logging.log4j.util.Strings; @@ -181,7 +182,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable { final Class<ParameterizedMessageFactory> defaultMessageFactoryClass) { try { final String clsName = PropertiesUtil.getProperties().getStringProperty(property, defaultMessageFactoryClass.getName()); - return Class.forName(clsName).asSubclass(MessageFactory.class); + return LoaderUtil.loadClass(clsName).asSubclass(MessageFactory.class); } catch (final Throwable t) { return defaultMessageFactoryClass; } @@ -191,7 +192,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable { final Class<DefaultFlowMessageFactory> defaultFlowMessageFactoryClass) { try { final String clsName = PropertiesUtil.getProperties().getStringProperty(property, defaultFlowMessageFactoryClass.getName()); - return Class.forName(clsName).asSubclass(FlowMessageFactory.class); + return LoaderUtil.loadClass(clsName).asSubclass(FlowMessageFactory.class); } catch (final Throwable t) { return defaultFlowMessageFactoryClass; }
