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


Reply via email to