You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2012/01/26 12:37:32 UTC
svn commit: r1236147 -
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
Author: andygumbrecht
Date: Thu Jan 26 11:37:31 2012
New Revision: 1236147
URL: http://svn.apache.org/viewvc?rev=1236147&view=rev
Log:
Try and read 'logging.properties' first.
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java?rev=1236147&r1=1236146&r2=1236147&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java Thu Jan 26 11:37:31 2012
@@ -23,9 +23,6 @@ import org.apache.openejb.loader.FileUti
import org.apache.openejb.loader.SystemInstance;
import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -39,17 +36,20 @@ import java.util.Properties;
import java.util.logging.Logger;
public class Log4jLogStreamFactory implements LogStreamFactory {
- private static final String LOGGING_PROPERTIES_FILE = "log4j.standalone.logging.properties";
+
+ private static final String LOGGING_PROPERTIES_FILE = "logging.properties";
+ private static final String STANDALONE_PROPERTIES_FILE = "log4j.standalone.";
private static final String EMBEDDED_PROPERTIES_FILE = "log4j.embedded.logging.properties";
- public LogStream createLogStream(LogCategory logCategory) {
+ @Override
+ public LogStream createLogStream(final LogCategory logCategory) {
return new Log4jLogStream(logCategory);
}
public Log4jLogStreamFactory() {
try {
- String prop = System.getProperty("openejb.logger.external", "false");
- boolean externalLogging = Boolean.parseBoolean(prop);
+ final String prop = System.getProperty("openejb.logger.external", "false");
+ final boolean externalLogging = Boolean.parseBoolean(prop);
if (!externalLogging) configureInternal();
} catch (Exception e) {
@@ -65,21 +65,30 @@ public class Log4jLogStreamFactory imple
final boolean embedded = System.getProperty("openejb.logging.embedded", "false").equalsIgnoreCase("true");
- File confDir = SystemInstance.get().getBase().getDirectory("conf");
+ final File confDir = SystemInstance.get().getBase().getDirectory("conf");
+
+ //Use the old file name first
File loggingPropertiesFile = new File(confDir, LOGGING_PROPERTIES_FILE);
+
if (!embedded && confDir.exists()) {
+
+ if (!loggingPropertiesFile.exists()) {
+ //Use the new file name
+ loggingPropertiesFile = new File(confDir, STANDALONE_PROPERTIES_FILE + LOGGING_PROPERTIES_FILE);
+ }
+
if (loggingPropertiesFile.exists()) {
// load logging.properties file
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(loggingPropertiesFile));
- Properties props = new Properties();
+ final BufferedInputStream bis = new BufferedInputStream(new FileInputStream(loggingPropertiesFile));
+ final Properties props = new Properties();
props.load(bis);
applyOverrides(props);
preprocessProperties(props);
PropertyConfigurator.configure(props);
try {
bis.close();
- } catch (IOException e) {
-
+ } catch (Throwable e) {
+ //Ignore
}
} else {
// install our logging.properties file into the conf dir
@@ -92,35 +101,35 @@ public class Log4jLogStreamFactory imple
}
}
- private static void applyOverrides(Properties properties) {
- Properties system = SystemInstance.get().getProperties();
- for (Map.Entry<Object, Object> entry : system.entrySet()) {
- String key = entry.getKey().toString();
+ private static void applyOverrides(final Properties properties) {
+ final Properties system = SystemInstance.get().getProperties();
+ for (final Map.Entry<Object, Object> entry : system.entrySet()) {
+ final String key = entry.getKey().toString();
if (key.startsWith("log4j.") && !key.equals("log4j.configuration")) {
properties.put(key, entry.getValue());
}
}
}
- private void preprocessProperties(Properties properties) {
- FileUtils base = SystemInstance.get().getBase();
- File confDir = new File(base.getDirectory(), "conf");
- File baseDir = base.getDirectory();
- File userDir = new File("foo").getParentFile();
-
- File[] paths = {confDir, baseDir, userDir};
-
- List<File> missing = new ArrayList<File>();
-
- for (Map.Entry<Object, Object> entry : properties.entrySet()) {
- String key = (String) entry.getKey();
- String value = (String) entry.getValue();
+ private void preprocessProperties(final Properties properties) {
+ final FileUtils base = SystemInstance.get().getBase();
+ final File confDir = new File(base.getDirectory(), "conf");
+ final File baseDir = base.getDirectory();
+ final File userDir = new File("foo").getParentFile();
+
+ final File[] paths = {confDir, baseDir, userDir};
+
+ final List<File> missing = new ArrayList<File>();
+
+ for (final Map.Entry<Object, Object> entry : properties.entrySet()) {
+ final String key = (String) entry.getKey();
+ final String value = (String) entry.getValue();
if (key.endsWith(".File")) {
boolean found = false;
for (int i = 0; i < paths.length && !found; i++) {
- File path = paths[i];
- File logfile = new File(path, value);
+ final File path = paths[i];
+ final File logfile = new File(path, value);
if (logfile.getParentFile().exists()) {
properties.setProperty(key, logfile.getAbsolutePath());
found = true;
@@ -128,39 +137,39 @@ public class Log4jLogStreamFactory imple
}
if (!found) {
- File logfile = new File(paths[0], value);
+ final File logfile = new File(paths[0], value);
missing.add(logfile);
}
}
}
if (missing.size() > 0) {
- org.apache.log4j.Logger logger = getFallabckLogger();
+ final org.apache.log4j.Logger logger = getFallabckLogger();
logger.error("Logging may not operate as expected. The directories for the following files do not exist so no file can be created. See the list below.");
for (int i = 0; i < missing.size(); i++) {
- File file = missing.get(i);
+ final File file = missing.get(i);
logger.error("[" + i + "] " + file.getAbsolutePath());
}
}
}
private org.apache.log4j.Logger getFallabckLogger() {
- org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger("OpenEJB.logging");
+ final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger("OpenEJB.logging");
- SimpleLayout simpleLayout = new SimpleLayout();
- ConsoleAppender newAppender = new ConsoleAppender(simpleLayout);
+ final SimpleLayout simpleLayout = new SimpleLayout();
+ final ConsoleAppender newAppender = new ConsoleAppender(simpleLayout);
logger.addAppender(newAppender);
return logger;
}
private void configureEmbedded() {
- URL resource = ConfUtils.getResource(EMBEDDED_PROPERTIES_FILE);
+ final URL resource = ConfUtils.getResource(EMBEDDED_PROPERTIES_FILE);
if (resource == null) {
System.err.println("FATAL ERROR WHILE CONFIGURING LOGGING!!!. MISSING embedded.logging.properties FILE ");
} else {
- Properties properties = asProperies(resource);
+ final Properties properties = asProperies(resource);
applyOverrides(properties);
PropertyConfigurator.configure(properties);
@@ -172,54 +181,69 @@ public class Log4jLogStreamFactory imple
}
}
- private static Properties asProperies(URL resource) {
- Properties properties = new Properties();
+ private static Properties asProperies(final URL resource) {
+ final Properties properties = new Properties();
InputStream in = null;
try {
in = resource.openStream();
in = new BufferedInputStream(in);
properties.load(in);
- } catch (IOException e) {
+ } catch (Throwable e) {
+ //Ignore
} finally {
- try {
- if (in != null) in.close();
- } catch (IOException e) {
+ if (null != in) {
+ try {
+ in.close();
+ } catch (Throwable e) {
+ //Ignore
+ }
}
}
return properties;
}
- private void installLoggingPropertiesFile(File loggingPropertiesFile) throws IOException {
- URL resource = Thread.currentThread().getContextClassLoader().getResource(LOGGING_PROPERTIES_FILE);
+ private void installLoggingPropertiesFile(final File loggingPropertiesFile) throws IOException {
+
+ final String name = STANDALONE_PROPERTIES_FILE + LOGGING_PROPERTIES_FILE;
+ final URL resource = Thread.currentThread().getContextClassLoader().getResource(name);
+
if (resource == null) {
- System.err.println("FATAL ERROR WHILE CONFIGURING LOGGING!!!. MISSING logging.properties FILE ");
+ System.err.println("FATAL ERROR WHILE CONFIGURING LOGGING!!!. MISSING RESOURCE " + name);
return;
}
- InputStream in = resource.openStream();
- in = new BufferedInputStream(in);
- ByteArrayOutputStream bao = new ByteArrayOutputStream();
- byte buf[] = new byte[4096];
- for (int count = in.read(buf); count >= 0; count = in.read(buf)) {
- bao.write(buf, 0, count);
- }
- byte[] byteArray = bao.toByteArray();
- ByteArrayInputStream bis = new ByteArrayInputStream(byteArray);
-
- Properties props = new Properties();
- props.load(bis);
- preprocessProperties(props);
- BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(loggingPropertiesFile));
- bout.write(byteArray);
- PropertyConfigurator.configure(props);
- try {
- bout.close();
- } catch (IOException e) {
- }
+ InputStream in = null;
+ FileOutputStream out = null;
+
try {
- in.close();
- } catch (IOException e) {
+ in = resource.openStream();
+ final Properties props = new Properties();
+ props.load(in);
+
+ preprocessProperties(props);
+
+ out = new FileOutputStream(loggingPropertiesFile);
+ props.store(out, "OpenEJB Default Log4j Configuration");
+
+ PropertyConfigurator.configure(props);
+ } finally {
+
+ if (null != in) {
+ try {
+ in.close();
+ } catch (Throwable e) {
+ //Ignore
+ }
+ }
+ if (null != out) {
+ try {
+ out.close();
+ } catch (Throwable e) {
+ //Ignore
+ }
+ }
}
+
}
}