|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 1999-2018 Alibaba Group Holding Ltd. |
|
|
|
* Copyright 1999-2017 Alibaba Group Holding Ltd. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
@ -26,28 +26,27 @@ public class LogFactory { |
|
|
|
String logType= System.getProperty("druid.logType"); |
|
|
|
String logType= System.getProperty("druid.logType"); |
|
|
|
if(logType != null){ |
|
|
|
if(logType != null){ |
|
|
|
if(logType.equalsIgnoreCase("slf4j")){ |
|
|
|
if(logType.equalsIgnoreCase("slf4j")){ |
|
|
|
tryImplementation("org.slf4j.Logger", "com.fr.third.alibaba.druid.support.logging.SLF4JImpl"); |
|
|
|
tryImplementation("org.slf4j.Logger", "SLF4JImpl"); |
|
|
|
}else if(logType.equalsIgnoreCase("log4j")){ |
|
|
|
}else if(logType.equalsIgnoreCase("log4j")){ |
|
|
|
tryImplementation("org.apache.log4j.Logger", "com.fr.third.alibaba.druid.support.logging.Log4jImpl"); |
|
|
|
tryImplementation("org.apache.log4j.Logger", "Log4jImpl"); |
|
|
|
}else if(logType.equalsIgnoreCase("log4j2")){ |
|
|
|
}else if(logType.equalsIgnoreCase("log4j2")){ |
|
|
|
tryImplementation("org.apache.logging.log4j.Logger", "com.fr.third.alibaba.druid.support.logging.Log4j2Impl"); |
|
|
|
tryImplementation("org.apache.logging.log4j.Logger", "Log4j2Impl"); |
|
|
|
}else if(logType.equalsIgnoreCase("commonsLog")){ |
|
|
|
}else if(logType.equalsIgnoreCase("commonsLog")){ |
|
|
|
tryImplementation("org.apache.commons.logging.LogFactory", |
|
|
|
tryImplementation("org.apache.commons.logging.LogFactory", |
|
|
|
"com.fr.third.alibaba.druid.support.logging.JakartaCommonsLoggingImpl"); |
|
|
|
"JakartaCommonsLoggingImpl"); |
|
|
|
}else if(logType.equalsIgnoreCase("jdkLog")){ |
|
|
|
}else if(logType.equalsIgnoreCase("jdkLog")){ |
|
|
|
tryImplementation("java.util.logging.Logger", "com.fr.third.alibaba.druid.support.logging.Jdk14LoggingImpl"); |
|
|
|
tryImplementation("java.util.logging.Logger", "Jdk14LoggingImpl"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 优先选择log4j2防止漏洞
|
|
|
|
// 优先选择log4j2防止漏洞
|
|
|
|
tryImplementation("com.fr.third.apache.logging.log4j.Logger", "FRLog4j2Impl"); |
|
|
|
tryImplementation("com.fr.third.apache.logging.log4j.Logger", "FRLog4j2Impl"); |
|
|
|
// 优先选择log4j,而非Apache Common Logging. 因为后者无法设置真实Log调用者的信息
|
|
|
|
// 优先选择log4j,而非Apache Common Logging. 因为后者无法设置真实Log调用者的信息
|
|
|
|
tryImplementation("com.fr.third.apache.log4j.Logger", "FRLog4jImpl"); |
|
|
|
tryImplementation("com.fr.third.apache.log4j.Logger", "FRLog4jImpl"); |
|
|
|
tryImplementation("org.slf4j.Logger", "com.fr.third.alibaba.druid.support.logging.SLF4JImpl"); |
|
|
|
tryImplementation("org.apache.log4j.Logger", "Log4jImpl"); |
|
|
|
tryImplementation("org.apache.log4j.Logger", "com.fr.third.alibaba.druid.support.logging.Log4jImpl"); |
|
|
|
tryImplementation("org.apache.logging.log4j.Logger", "Log4j2Impl"); |
|
|
|
tryImplementation("org.apache.logging.log4j.Logger", "com.fr.third.alibaba.druid.support.logging.Log4j2Impl"); |
|
|
|
tryImplementation("org.slf4j.Logger", "SLF4JImpl"); |
|
|
|
tryImplementation("org.apache.commons.logging.LogFactory", |
|
|
|
tryImplementation("org.apache.commons.logging.LogFactory", "JakartaCommonsLoggingImpl"); |
|
|
|
"com.fr.third.alibaba.druid.support.logging.JakartaCommonsLoggingImpl"); |
|
|
|
tryImplementation("java.util.logging.Logger", "Jdk14LoggingImpl"); |
|
|
|
tryImplementation("java.util.logging.Logger", "com.fr.third.alibaba.druid.support.logging.Jdk14LoggingImpl"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (logConstructor == null) { |
|
|
|
if (logConstructor == null) { |
|
|
|
try { |
|
|
|
try { |
|
|
@ -66,7 +65,13 @@ public class LogFactory { |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
try { |
|
|
|
Resources.classForName(testClassName); |
|
|
|
Resources.classForName(testClassName); |
|
|
|
Class implClass = Resources.classForName(implClassName); |
|
|
|
Class implClass = null; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
implClass = Resources.classForName(implClassName); |
|
|
|
|
|
|
|
} catch (Throwable t) { |
|
|
|
|
|
|
|
implClassName = "com.fr.third.alibaba.druid.support.logging." + implClassName; |
|
|
|
|
|
|
|
implClass = Resources.classForName(implClassName); |
|
|
|
|
|
|
|
} |
|
|
|
logConstructor = implClass.getConstructor(new Class[] { String.class }); |
|
|
|
logConstructor = implClass.getConstructor(new Class[] { String.class }); |
|
|
|
|
|
|
|
|
|
|
|
Class<?> declareClass = logConstructor.getDeclaringClass(); |
|
|
|
Class<?> declareClass = logConstructor.getDeclaringClass(); |
|
|
|