Author: dblevins
Date: Wed Sep 19 21:31:18 2007
New Revision: 577541
URL: http://svn.apache.org/viewvc?rev=577541&view=rev
Log:
Resolve paths to the conf dir, openejb base, or user dir log error on hardwired
logger if the directories for the log files don't exist.
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
openejb/trunk/openejb3/container/openejb-core/src/main/resources/logging.properties
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java?rev=577541&r1=577540&r2=577541&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
Wed Sep 19 21:31:18 2007
@@ -18,6 +18,8 @@
import org.apache.log4j.Level;
import org.apache.log4j.PropertyConfigurator;
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.SimpleLayout;
import org.apache.openejb.loader.FileUtils;
import org.apache.openejb.loader.SystemInstance;
@@ -36,6 +38,8 @@
import java.util.MissingResourceException;
import java.util.Properties;
import java.util.ResourceBundle;
+import java.util.List;
+import java.util.ArrayList;
public class Logger {
@@ -160,15 +164,58 @@
}
}
- private static void preprocessProperties(Properties props) {
- String openejbHome =
SystemInstance.get().getHome().getDirectory().getAbsolutePath();
- String openejbBase =
SystemInstance.get().getBase().getDirectory().getAbsolutePath();
- for (Map.Entry<Object, Object> entry : props.entrySet()) {
+ private static 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 missing = new ArrayList();
+
+ for (Map.Entry<Object, Object> entry : properties.entrySet()) {
+ String key = (String) entry.getKey();
String value = (String) entry.getValue();
- value = value.replace("${openejb.home}", openejbHome);
- value = value.replace("${openejb.base}", openejbBase);
- entry.setValue(value);
+
+
+ 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);
+ if (logfile.getParentFile().exists()) {
+ properties.setProperty(key, logfile.getAbsolutePath());
+ found = true;
+ }
+ }
+
+ if (!found) {
+ File logfile = new File(paths[0], value);
+ missing.add(logfile);
+ }
+ }
+ }
+
+ if (missing.size() > 0) {
+ 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 = (File) missing.get(i);
+ logger.error("[" + i + "] " + file.getAbsolutePath());
+ }
}
+ }
+
+ private static org.apache.log4j.Logger getFallabckLogger() {
+ org.apache.log4j.Logger logger =
org.apache.log4j.Logger.getLogger("OpenEJB.logging");
+
+ SimpleLayout simpleLayout = new SimpleLayout();
+ ConsoleAppender newAppender = new ConsoleAppender(simpleLayout);
+ logger.addAppender(newAppender);
+ return logger;
}
private static void configureEmbedded() {
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/resources/logging.properties
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/resources/logging.properties?rev=577541&r1=577540&r2=577541&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/resources/logging.properties
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/resources/logging.properties
Wed Sep 19 21:31:18 2007
@@ -28,12 +28,12 @@
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.MaxFileSize=1000KB
log4j.appender.R.MaxBackupIndex=7
-log4j.appender.R.File=${openejb.base}/logs/openejb.log
+log4j.appender.R.File=logs/openejb.log
log4j.appender.R.layout.ConversionPattern=%d - %-5p - %m%n
log4j.appender.TX=org.apache.log4j.RollingFileAppender
log4j.appender.TX.layout=org.apache.log4j.PatternLayout
log4j.appender.TX.MaxFileSize=1000KB
log4j.appender.TX.MaxBackupIndex=100
-log4j.appender.TX.File=${openejb.base}/logs/transaction.log
+log4j.appender.TX.File=logs/transaction.log
log4j.appender.TX.layout.ConversionPattern=%d - %-5p - %m%n