#1785 add default log manager

This commit is contained in:
Shinsuke Sugaya 2018-07-26 17:27:18 +09:00
parent 48ec1cec66
commit 2d3c456293

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.logging.LogManager;
import java.util.logging.Logger;
@ -22,16 +24,54 @@ public class FessLogManager extends LogManager {
private static final String ORG_APACHE_LOGGING_LOG4J_JUL_LOG_MANAGER = "org.apache.logging.log4j.jul.LogManager";
private static final LogManager manager;
static {
manager = AccessController.doPrivileged(new PrivilegedAction<LogManager>() {
@Override
public LogManager run() {
LogManager mgr = null;
String cname = null;
try {
cname = System.getProperty("java.util.logging.manager");
if (cname != null) {
try {
Class<?> clz = ClassLoader.getSystemClassLoader().loadClass(cname);
mgr = (LogManager) clz.newInstance();
} catch (ClassNotFoundException ex) {
Class<?> clz = Thread.currentThread().getContextClassLoader().loadClass(cname);
mgr = (LogManager) clz.newInstance();
}
}
} catch (Exception ex) {
System.err.println("Could not load Logmanager \"" + cname + "\"");
ex.printStackTrace();
}
if (mgr == null) {
mgr = new DefaultLogManager();
}
return mgr;
}
});
}
private static class DefaultLogManager extends LogManager {
DefaultLogManager() {
super();
}
}
@Override
public Logger getLogger(final String name) {
final LogManager logManager = getLogManager(ORG_APACHE_LOGGING_LOG4J_JUL_LOG_MANAGER);
final LogManager logManager = createLogManager(ORG_APACHE_LOGGING_LOG4J_JUL_LOG_MANAGER);
if (logManager != null) {
return logManager.getLogger(name);
}
return LogManager.getLogManager().getLogger(name);
return manager.getLogger(name);
}
private LogManager getLogManager(final String cname) {
private LogManager createLogManager(final String cname) {
try {
try {
final Class<?> clz = ClassLoader.getSystemClassLoader().loadClass(cname);