You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/01/26 22:34:24 UTC
svn commit: r1236394 -
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
Author: dblevins
Date: Thu Jan 26 21:34:24 2012
New Revision: 1236394
URL: http://svn.apache.org/viewvc?rev=1236394&view=rev
Log:
Refined the checking for OPENEJB-1760
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java?rev=1236394&r1=1236393&r2=1236394&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java Thu Jan 26 21:34:24 2012
@@ -71,45 +71,85 @@ public class Logger {
if (factoryName != null) {
- Class<?> factoryClass = null;
+ logStreamFactory = createFactory(factoryName);
+ }
- final ClassLoader classLoader = Logger.class.getClassLoader();
+ if (isLog4jImplied()) {
+ logStreamFactory = createFactory("org.apache.openejb.util.Log4jLogStreamFactory");
+ }
- if (classLoader != null) {
- try {
- factoryClass = classLoader.loadClass(factoryName);
- } catch (Throwable e) {
- try {
- factoryClass = Thread.currentThread().getContextClassLoader().loadClass(factoryName);
- } catch (ClassNotFoundException e1) {
- // ignored
- }
- }
- }
+ //Fall back -> JUL
+ if (logStreamFactory == null) {
+ logStreamFactory = new JuliLogStreamFactory();
+ }
- if (factoryClass == null) {
- try {
- factoryClass = Class.forName(factoryName);
- } catch (Throwable e) {
- //Ignore
- }
+ checkForIgnoredLog4jConfig();
+ }
+
+ private static void checkForIgnoredLog4jConfig() {
+ if (logStreamFactory.getClass().getName().equals("org.apache.openejb.util.Log4jLogStreamFactory")) return;
+
+ try {
+ final Properties configFile = log4j(loadLoggingProperties());
+
+ final Properties systemProperties = log4j(SystemInstance.get().getProperties());
+
+ if (configFile.size() == 0 && systemProperties.size() == 0) return;
+
+ final LogStream stream = logStreamFactory.createLogStream(LogCategory.OPENEJB);
+
+ stream.warn("Log4j not installed. The following properties will be ignored.");
+
+ final String format = "Ignored %s property '%s'";
+
+ for (Object key : configFile.keySet()) {
+ stream.warn(String.format(format, "conf/logging.properties", key));
}
- if (factoryClass != null) {
- try {
- //Try and use the user specified factory
- logStreamFactory = (LogStreamFactory) factoryClass.newInstance();
- return;
- } catch (Throwable e) {
- //Ignore
- }
+ for (Object key : systemProperties.keySet()) {
+ stream.warn(String.format(format, "Property overrides", key));
}
+ } catch (Throwable e) {
+ // added strong catch block just in case
+ // This check is only a convenience
}
+ }
- if (isLog4jImplied())
+ private static LogStreamFactory createFactory(String factoryName) {
- //Fall back -> JUL
- logStreamFactory = new JuliLogStreamFactory();
+ final Class<?> factoryClass = load(factoryName);
+
+ if (factoryClass == null) return null;
+
+ try {
+ //Try and use the user specified factory
+ return (LogStreamFactory) factoryClass.newInstance();
+ } catch (Throwable e) {
+ //Ignore
+ }
+
+ return null;
+ }
+
+ private static Class<?> load(String factoryName) {
+ try {
+ final ClassLoader classLoader = Logger.class.getClassLoader();
+ return classLoader.loadClass(factoryName);
+ } catch (Throwable e) {
+ }
+
+ try {
+ final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ return contextClassLoader.loadClass(factoryName);
+ } catch (Throwable e1) {
+ }
+
+ try {
+ return Class.forName(factoryName);
+ } catch (Throwable e2) {
+ }
+
+ return null;
}
/**
@@ -224,14 +264,17 @@ public class Logger {
public static boolean isLog4jImplied() {
- final Properties configFile = log4j(loadLoggingProperties());
+ final List<String> locations = new ArrayList<String>();
- final Properties systemProperties = log4j(SystemInstance.get().getProperties());
+ {
+ final Properties configFile = log4j(loadLoggingProperties());
- final List<String> locations = new ArrayList<String>();
+ final Properties systemProperties = log4j(SystemInstance.get().getProperties());
+
+ if (configFile.size() > 0) locations.add("conf/logging.properties");
+ if (systemProperties.size() > 0) locations.add("Properties overrides");
+ }
- if (configFile.size() > 0) locations.add("conf/logging.properties");
- if (systemProperties.size() > 0) locations.add("Properties overrides");
if (locations.size() > 0) {
if (exists("org.apache.log4j.Logger")) {
@@ -241,10 +284,6 @@ public class Logger {
return true;
} else {
- System.out.println(String.format("Log4j settings specified in %s will be ignored as Log4j has not been added to the classpath.", Join.join(" and ", locations)));
-
- printIgnored(configFile, "conf/logging.properties");
- printIgnored(systemProperties, "Property overrides");
return false;
}
@@ -253,21 +292,8 @@ public class Logger {
return false;
}
- private static void printIgnored(Properties systemProperties, String location) {
- for (Object key : systemProperties.keySet()) {
- final String s = String.format("Ignored %s property '%s'", location, key);
- System.out.println(s);
- }
- }
-
private static boolean exists(String s) {
- try {
- final ClassLoader loader = Thread.currentThread().getContextClassLoader();
- loader.loadClass(s);
- return true;
- } catch (Throwable e) {
- return false;
- }
+ return load(s) != null;
}
private static Properties log4j(Properties system) {