Sort members
This commit is contained in:
@@ -1405,45 +1405,6 @@ public abstract class LogFactory {
|
|||||||
return newFactory(factoryClass, classLoader, null);
|
return newFactory(factoryClass, classLoader, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Tries to load one of the standard three implementations from the given classloader.
|
|
||||||
* <p>
|
|
||||||
* We assume that {@code classLoader} can load this class.
|
|
||||||
* </p>
|
|
||||||
* @param classLoader The classloader to use.
|
|
||||||
* @return An implementation of this class.
|
|
||||||
*/
|
|
||||||
private static LogFactory newStandardFactory(final ClassLoader classLoader) {
|
|
||||||
if (isClassAvailable(LOG4J_TO_SLF4J_BRIDGE, classLoader)) {
|
|
||||||
try {
|
|
||||||
return (LogFactory) Class.forName(FACTORY_SLF4J, true, classLoader).getConstructor().newInstance();
|
|
||||||
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
|
||||||
} finally {
|
|
||||||
logDiagnostic(
|
|
||||||
"[LOOKUP] Log4j API to SLF4J redirection detected. Loading the SLF4J LogFactory implementation '" + FACTORY_SLF4J + "'.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return (LogFactory) Class.forName(FACTORY_LOG4J_API, true, classLoader).getConstructor().newInstance();
|
|
||||||
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
|
||||||
} finally {
|
|
||||||
logDiagnostic("[LOOKUP] Loading the Log4j API LogFactory implementation '" + FACTORY_LOG4J_API + "'.");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return (LogFactory) Class.forName(FACTORY_SLF4J, true, classLoader).getConstructor().newInstance();
|
|
||||||
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
|
||||||
} finally {
|
|
||||||
logDiagnostic("[LOOKUP] Loading the SLF4J LogFactory implementation '" + FACTORY_SLF4J + "'.");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return (LogFactory) Class.forName(FACTORY_DEFAULT, true, classLoader).getConstructor().newInstance();
|
|
||||||
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
|
||||||
} finally {
|
|
||||||
logDiagnostic("[LOOKUP] Loading the legacy LogFactory implementation '" + FACTORY_DEFAULT + "'.");
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a new instance of the specified {@code LogFactory} implementation class, loaded by the specified class loader. If that fails, try the class loader
|
* Gets a new instance of the specified {@code LogFactory} implementation class, loaded by the specified class loader. If that fails, try the class loader
|
||||||
* used to load this (abstract) LogFactory.
|
* used to load this (abstract) LogFactory.
|
||||||
@@ -1500,6 +1461,45 @@ public abstract class LogFactory {
|
|||||||
return (LogFactory) result;
|
return (LogFactory) result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tries to load one of the standard three implementations from the given classloader.
|
||||||
|
* <p>
|
||||||
|
* We assume that {@code classLoader} can load this class.
|
||||||
|
* </p>
|
||||||
|
* @param classLoader The classloader to use.
|
||||||
|
* @return An implementation of this class.
|
||||||
|
*/
|
||||||
|
private static LogFactory newStandardFactory(final ClassLoader classLoader) {
|
||||||
|
if (isClassAvailable(LOG4J_TO_SLF4J_BRIDGE, classLoader)) {
|
||||||
|
try {
|
||||||
|
return (LogFactory) Class.forName(FACTORY_SLF4J, true, classLoader).getConstructor().newInstance();
|
||||||
|
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
||||||
|
} finally {
|
||||||
|
logDiagnostic(
|
||||||
|
"[LOOKUP] Log4j API to SLF4J redirection detected. Loading the SLF4J LogFactory implementation '" + FACTORY_SLF4J + "'.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return (LogFactory) Class.forName(FACTORY_LOG4J_API, true, classLoader).getConstructor().newInstance();
|
||||||
|
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
||||||
|
} finally {
|
||||||
|
logDiagnostic("[LOOKUP] Loading the Log4j API LogFactory implementation '" + FACTORY_LOG4J_API + "'.");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return (LogFactory) Class.forName(FACTORY_SLF4J, true, classLoader).getConstructor().newInstance();
|
||||||
|
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
||||||
|
} finally {
|
||||||
|
logDiagnostic("[LOOKUP] Loading the SLF4J LogFactory implementation '" + FACTORY_SLF4J + "'.");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return (LogFactory) Class.forName(FACTORY_DEFAULT, true, classLoader).getConstructor().newInstance();
|
||||||
|
} catch (final LinkageError | ReflectiveOperationException ignored) {
|
||||||
|
} finally {
|
||||||
|
logDiagnostic("[LOOKUP] Loading the legacy LogFactory implementation '" + FACTORY_DEFAULT + "'.");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a string that uniquely identifies the specified object, including
|
* Returns a string that uniquely identifies the specified object, including
|
||||||
* its class.
|
* its class.
|
||||||
|
|||||||
Reference in New Issue
Block a user