You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/05/19 22:49:06 UTC

svn commit: r1596054 - in /tomee/tomee/trunk: container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apache/openejb/persistence/ container/openejb-core/src/main/java/org/apache/openejb/util/ container/openejb-...

Author: rmannibucau
Date: Mon May 19 20:49:05 2014
New Revision: 1596054

URL: http://svn.apache.org/r1596054
Log:
TOMEE-1215 TOMEE-1214 reworking what is loaded and when and using jul when openejb Logger is not available. Replacing tomcat-juli by tomee-juli (keeping same name for tomcat tools) to be able to switch tomcat loggers too. Default stays the same.

Added:
    tomee/tomee/trunk/tomee/tomee-juli/
    tomee/tomee/trunk/tomee/tomee-juli/pom.xml
    tomee/tomee/trunk/tomee/tomee-juli/src/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/logging/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/logging/LogFactory.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/TomEELogConfigurer.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/
    tomee/tomee/trunk/tomee/tomee-juli/src/test/
    tomee/tomee/trunk/tomee/tomee-juli/src/test/java/
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLogFactory.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLogFactory.java
Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Core.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
    tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
    tomee/tomee/trunk/tomee/pom.xml
    tomee/tomee/trunk/tomee/tomee-catalina/pom.xml
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java
    tomee/tomee/trunk/tomee/tomee-loader/pom.xml
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Core.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Core.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Core.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/Core.java Mon May 19 20:49:05 2014
@@ -104,7 +104,6 @@ public class Core {
 
         try { // logging classes should be loaded before any other classes so do it here synchronously
             Class.forName("org.apache.openejb.util.Logger", true, loader);
-            Class.forName("org.apache.openejb.util.JuliLogStreamFactory", true, loader);
         } catch (final Throwable e) {
             // no-op
         }

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java Mon May 19 20:49:05 2014
@@ -21,8 +21,6 @@ import org.apache.openejb.core.TempClass
 import org.apache.openejb.javaagent.Agent;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Saxs;
 import org.apache.xbean.finder.ClassLoaders;
 import org.xml.sax.Attributes;
@@ -59,6 +57,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import static org.apache.openejb.loader.JarLocation.decode;
 
@@ -77,7 +77,7 @@ import static org.apache.openejb.loader.
  */
 public class PersistenceBootstrap {
 
-    public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, PersistenceBootstrap.class);
+    public static final Logger logger = Logger.getLogger(PersistenceBootstrap.class.getName());
 
     public static final String DEFAULT_PROVIDER = getDefaultProvider();
 
@@ -93,7 +93,7 @@ public class PersistenceBootstrap {
                 return trim;
             }
         } catch (final Exception e) {
-            logger.warning("Could not read " + name, e);
+            logger.log(Level.WARNING, "Could not read " + name, e);
         }
 
         return "org.apache.openjpa.persistence.PersistenceProviderImpl";
@@ -443,7 +443,7 @@ public class PersistenceBootstrap {
             return null;
         }
 
-        public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        public Logger getParentLogger() throws SQLFeatureNotSupportedException {
             return null;
         }
 

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java Mon May 19 20:49:05 2014
@@ -22,6 +22,7 @@ import org.apache.openejb.loader.SystemI
 import org.apache.openejb.log.ConsoleColorHandler;
 import org.apache.openejb.log.SingleLineFormatter;
 import org.apache.openejb.util.reflection.Reflections;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
 
 import java.io.OutputStreamWriter;
 import java.lang.reflect.Constructor;
@@ -96,7 +97,7 @@ public class JuliLogStreamFactory implem
             // no-op: openjpa is not at the classpath so don't trigger it loading with our logger
         }
 
-        System.setProperty("openwebbeans.logging.factory", "org.apache.webbeans.logger.JULLoggerFactory");
+        System.setProperty(WebBeansLoggerFacade.class.getName(), "org.apache.webbeans.logger.JULLoggerFactory");
     }
 
     private static void setRootLogger(final OpenEJBLogManager value) {

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java Mon May 19 20:49:05 2014
@@ -21,9 +21,11 @@ import org.apache.log4j.ConsoleAppender;
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.log4j.SimpleLayout;
 import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.openejb.cdi.logging.Log4jLoggerFactory;
 import org.apache.openejb.loader.FileUtils;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
 
 import java.io.File;
 import java.io.IOException;
@@ -64,6 +66,7 @@ public class Log4jLogStreamFactory imple
         // OpenJPA should use Log4j also
         System.setProperty("openjpa.Log", "log4j");
         System.setProperty("org.apache.cxf.Logger", "org.apache.cxf.common.logging.Log4jLogger");
+        System.setProperty(WebBeansLoggerFacade.OPENWEBBEANS_LOGGING_FACTORY_PROP, Log4jLoggerFactory.class.getName());
 
         final boolean embedded = SystemInstance.get().getOptions().get("openejb.logging.embedded", false);
 

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java Mon May 19 20:49:05 2014
@@ -39,6 +39,14 @@ public class Logger {
         configure();
     }
 
+    // don't return the instance since it needs to stay private but export which one is used to allow integration with other libs (as tomcat ;))
+    public static String delegateClass() {
+        if (logStreamFactory == null) {
+            throw new IllegalStateException("Call this method after having configured the logger");
+        }
+        return logStreamFactory.getClass().getName();
+    }
+
     public static synchronized void configure() {
         if (logStreamFactory != null) {
             return;

Modified: tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java (original)
+++ tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java Mon May 19 20:49:05 2014
@@ -155,10 +155,16 @@ public class SystemInstance {
     }
 
     public FileUtils getHome() {
+        if (!isInitialized()) {
+            return new FileUtils("openejb.home", "user.dir", System.getProperties());
+        }
         return home;
     }
 
     public FileUtils getBase() {
+        if (!isInitialized()) {
+            return new FileUtils("openejb.base", "openejb.home", System.getProperties());
+        }
         return base;
     }
 

Modified: tomee/tomee/trunk/tomee/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/pom.xml?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/pom.xml (original)
+++ tomee/tomee/trunk/tomee/pom.xml Mon May 19 20:49:05 2014
@@ -54,6 +54,7 @@
     <module>tomee-jaxrs-webapp</module>
     <module>apache-tomee</module>
     <module>tomee-util</module>
+    <module>tomee-juli</module>
     <!--<module>tomee-deb</module>-->
   </modules>
 

Modified: tomee/tomee/trunk/tomee/tomee-catalina/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/pom.xml?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/pom.xml Mon May 19 20:49:05 2014
@@ -38,7 +38,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jxr-plugin</artifactId>
-		<version>2.3</version>
+		    <version>2.3</version>
       </plugin>
     </plugins>
   </reporting>
@@ -105,6 +105,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-juli</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-server</artifactId>
     </dependency>
     <dependency>

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java Mon May 19 20:49:05 2014
@@ -26,6 +26,7 @@ import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.ProvisioningUtil;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.OpenEjbVersion;
+import org.apache.tomee.TomEELogConfigurer;
 import org.apache.tomee.loader.TomcatHelper;
 
 import java.io.File;
@@ -145,6 +146,8 @@ public class ServerListener implements L
                 final TomcatLoader loader = new TomcatLoader();
                 loader.init(properties);
 
+                TomEELogConfigurer.configureLogs();
+
                 listenerInstalled.set(true);
             } catch (final Exception e) {
                 LOGGER.log(Level.SEVERE, "TomEE Listener can't start OpenEJB", e);

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java Mon May 19 20:49:05 2014
@@ -46,8 +46,6 @@ import org.apache.openejb.server.Service
 import org.apache.openejb.server.ejbd.EjbServer;
 import org.apache.openejb.spi.Service;
 import org.apache.openejb.util.Join;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.OptionsLog;
 import org.apache.tomcat.util.scan.Constants;
 import org.apache.tomee.catalina.deployment.TomcatWebappDeployer;
@@ -65,6 +63,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * <h1>Prerequisites</h1>
@@ -93,7 +93,7 @@ import java.util.Set;
  * @version $Revision: 617255 $ $Date: 2008-01-31 13:58:36 -0800 (Thu, 31 Jan 2008) $
  */
 public class TomcatLoader implements Loader {
-    private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, TomcatLoader.class);
+    private static final Logger logger = Logger.getLogger(TomcatLoader.class.getName());
     public static final String TOMEE_NOSHUTDOWNHOOK_PROP = "tomee.noshutdownhook";
 
     /**
@@ -268,7 +268,7 @@ public class TomcatLoader implements Loa
             try {
                 manager = (ServiceManager) cl.loadClass(clazz).newInstance();
             } catch (ClassNotFoundException cnfe) {
-                logger.error("can't find the service manager " + clazz + ", the TomEE one will be used");
+                logger.severe("can't find the service manager " + clazz + ", the TomEE one will be used");
                 manager = new TomEEServiceManager();
             }
             manager.init();
@@ -283,8 +283,7 @@ public class TomcatLoader implements Loa
             } catch (ClassNotFoundException ignored) {
                 // no-op
             } catch (Exception e) {
-                Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, getClass());
-                logger.error("Webservices failed to start", e);
+                logger.log(Level.SEVERE, "Webservices failed to start", e);
             }
 
             // REST
@@ -296,7 +295,7 @@ public class TomcatLoader implements Loa
             } catch (ClassNotFoundException ignored) {
                 // no-op
             } catch (Exception e) {
-                logger.error("REST failed to start", e);
+                logger.log(Level.SEVERE, "REST failed to start", e);
             }
         }
 
@@ -327,10 +326,10 @@ public class TomcatLoader implements Loa
             Service service = (Service) getClass().getClassLoader().loadClass(className).newInstance();
             service.init(properties);
             return true;
-        } catch (ClassNotFoundException e) {
-            logger.info("Optional service not installed: " + className);
-        } catch (Exception e) {
-            logger.error("Failed to start: " + className, e);
+        } catch (final ClassNotFoundException e) {
+            // no-op: logger.info("Optional service not installed: " + className);
+        } catch (final Exception e) {
+            logger.log(Level.SEVERE, "Failed to start: " + className, e);
         }
         return false;
     }

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java Mon May 19 20:49:05 2014
@@ -161,7 +161,6 @@ public class Warmup {
 
         try { // see org.apache.openejb.Core
             Class.forName("org.apache.openejb.util.Logger", true, loader);
-            Class.forName("org.apache.openejb.util.JuliLogStreamFactory", true, loader);
         } catch (Throwable e) {
             // no-op
         }

Modified: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java (original)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java Mon May 19 20:49:05 2014
@@ -101,6 +101,7 @@ public class Installer implements Instal
 
         removeTomcatLibJar("annotations-api.jar");
         addJavaeeInEndorsed();
+        addTomEEJuli();
 
         addTomEEAdminConfInTomcatUsers();
         addTomEELinkToTomcatHome();
@@ -110,6 +111,22 @@ public class Installer implements Instal
         }
     }
 
+    // switch tomcat-juli with tomee-juli
+    // we keep the same name to let all tomcat tooling work as expected
+    private void addTomEEJuli() {
+        final File original = new File(paths.getCatalinaBinDir(), "tomcat-juli.jar");
+
+        final File juli = paths.findOpenEJBJar("tomee-juli");
+        try {
+            Installers.copyFile(juli, new File(original.getAbsolutePath()));
+            if (!juli.delete()) { // remove original
+                juli.deleteOnExit();
+            }
+        } catch (IOException e) {
+            alerts.addInfo("Add tomee user to tomcat-users.xml");
+        }
+    }
+
     public void addTomEEAdminConfInTomcatUsers() {
         addTomEEAdminConfInTomcatUsers(false);
     }
@@ -169,6 +186,7 @@ public class Installer implements Instal
 
         removeTomcatLibJar("annotations-api.jar");
         addJavaeeInEndorsed();
+        addTomEEJuli(); // before moveLibs
         moveLibs();
 
         addTomEEAdminConfInTomcatUsers();

Modified: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java (original)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java Mon May 19 20:49:05 2014
@@ -23,6 +23,7 @@ import org.apache.openejb.loader.JarLoca
 import org.apache.tomee.common.TomcatVersion;
 
 import java.io.File;
+import java.io.FilenameFilter;
 import java.util.ArrayList;
 import java.util.List;
 /**
@@ -300,22 +301,17 @@ public class Paths implements PathsInter
         return jar;
     }
 
-    private File findJar(File dir, String namePrefix) {
+    private File findJar(final File dir, final String namePrefix) {
         if (dir == null) return null;
 
-        File openejbLoaderJar = null;
-        final File[] files = dir.listFiles();
-        if (files != null) {
-            for (File file : files) {
-                final String name = file.getName();
-                if ((name.startsWith(namePrefix + "-") && name.endsWith(".jar"))
-                        || name.equals(namePrefix)) {
-                    return file;
-                }
+        final File[] files = dir.listFiles(new FilenameFilter() {
+            @Override
+            public boolean accept(final File dir, final String name) {
+                return (name.startsWith(namePrefix + "-") && name.endsWith(".jar")) || name.equals(namePrefix);
             }
-        }
+        });
 
-        return openejbLoaderJar;
+        return files != null && files.length > 0? files[0] : null;
     }
 
     /**Verifies the following:

Added: tomee/tomee/trunk/tomee/tomee-juli/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/pom.xml?rev=1596054&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/pom.xml (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/pom.xml Mon May 19 20:49:05 2014
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <parent>
+    <artifactId>tomee</artifactId>
+    <groupId>org.apache.openejb</groupId>
+    <version>1.6.1-SNAPSHOT</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>tomee-juli</artifactId>
+  <name>OpenEJB :: TomEE :: Juli</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-juli</artifactId>
+      <version>${tomcat.version}</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>2.3</version>
+        <executions>
+          <execution>
+            <id>tomee-juli</id>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createSourcesJar>true</createSourcesJar>
+              <artifactSet>
+                <includes>
+                  <include>org.apache.tomcat:tomcat-juli</include>
+                </includes>
+              </artifactSet>
+              <filters>
+                <filter>
+                  <artifact>org.apache.tomcat:tomcat-juli</artifact>
+                  <excludes>
+                    <exclude>org/apache/juli/logging/LogFactory.class</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/logging/LogFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/logging/LogFactory.java?rev=1596054&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/logging/LogFactory.java (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/logging/LogFactory.java Mon May 19 20:49:05 2014
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.juli.logging;
+
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.logging.LogManager;
+
+
+// tomcat doesn't have any spi mecanism so forking this class
+public /* abstract */ class LogFactory {
+    public static final String FACTORY_PROPERTY =
+            "org.apache.commons.logging.LogFactory";
+
+    public static final String FACTORY_DEFAULT =
+            "org.apache.commons.logging.impl.LogFactoryImpl";
+
+    public static final String FACTORY_PROPERTIES =
+            "commons-logging.properties";
+
+    public static final String HASHTABLE_IMPLEMENTATION_PROPERTY =
+            "org.apache.commons.logging.LogFactory.HashtableImpl";
+
+    private static LogFactory singleton=new LogFactory();
+    private final Collection<String> names = new HashSet<String>();
+
+    Properties logConfig;
+
+    protected LogFactory() {
+        logConfig=new Properties();
+    }
+
+    protected static void setSingleton(final LogFactory singleton) {
+        if (singleton == null) {
+            return;
+        }
+        LogFactory.singleton = singleton;
+    }
+
+    void setLogConfig( Properties p ) {
+        this.logConfig=p;
+    }
+
+    public Collection<String> getNames() {
+        return names;
+    }
+
+    public Log getInstance(String name)
+            throws LogConfigurationException {
+        synchronized (names) {
+            names.add(name);
+        }
+        return DirectJDKLog.getInstance(name);
+    }
+
+    public void release() {
+        DirectJDKLog.release();
+    }
+
+    public Object getAttribute(String name) {
+        return logConfig.get(name);
+    }
+
+    public String[] getAttributeNames() {
+        String result[] = new String[logConfig.size()];
+        return logConfig.keySet().toArray(result);
+    }
+
+    public void removeAttribute(String name) {
+        logConfig.remove(name);
+    }
+
+    public void setAttribute(String name, Object value) {
+        logConfig.put(name, value);
+    }
+
+    public Log getInstance(Class<?> clazz)
+            throws LogConfigurationException {
+        return getInstance( clazz.getName());
+    }
+
+    public static LogFactory getFactory() throws LogConfigurationException {
+        return singleton;
+    }
+
+    public static Log getLog(Class<?> clazz)
+            throws LogConfigurationException {
+        return (getFactory().getInstance(clazz));
+
+    }
+
+    public static Log getLog(String name)
+            throws LogConfigurationException {
+        return (getFactory().getInstance(name));
+
+    }
+
+    public static void release(ClassLoader classLoader) {
+        // JULI's log manager looks at the current classLoader so there is no
+        // need to use the passed in classLoader, the default implementation
+        // does not so calling reset in that case will break things
+        if (!LogManager.getLogManager().getClass().getName().equals(
+                "java.util.logging.LogManager")) {
+            LogManager.getLogManager().reset();
+        }
+    }
+
+    public static void releaseAll() {
+        singleton.release();
+    }
+
+    public static String objectId(Object o) {
+        if (o == null) {
+            return "null";
+        } else {
+            return o.getClass().getName() + "@" + System.identityHashCode(o);
+        }
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/TomEELogConfigurer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/TomEELogConfigurer.java?rev=1596054&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/TomEELogConfigurer.java (added)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/TomEELogConfigurer.java Mon May 19 20:49:05 2014
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee;
+
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+
+public abstract class TomEELogConfigurer extends LogFactory {
+    public static void configureLogs() {
+        if (Boolean.getBoolean("tomee.skip-tomcat-log")) {
+            return;
+        }
+
+        final Thread thread = Thread.currentThread();
+        try {
+            final ClassLoader tccl = thread.getContextClassLoader(); // this is in classpath not StandardClassLoader so use reflection
+            final Class<?> logger = tccl.loadClass("org.apache.openejb.util.Logger");
+            final Method m = logger.getDeclaredMethod("delegateClass");
+            final String clazz = (String) m.invoke(null);
+            final LogFactory factory;
+            if ("org.apache.openejb.util.Log4jLogStreamFactory".equals(clazz)) {
+                factory = LogFactory.class.cast(tccl.loadClass("org.apache.tomee.loader.log.Log4jLogFactory").newInstance());
+            } else if ("org.apache.openejb.util.Slf4jLogStreamFactory".equals(clazz)) {
+                factory = LogFactory.class.cast(tccl.loadClass("org.apache.tomee.loader.log.Slf4jLogFactory").newInstance());
+            } else {
+                factory = null;
+            }
+            if (factory != null) {
+                final LogFactory oldFactory = getFactory();
+                final Collection<String> names = new ArrayList<String>(oldFactory.getNames());
+                oldFactory.getNames().clear();
+                oldFactory.release();
+                setSingleton(factory);
+                reload(factory, tccl, names);
+            }
+        } catch (final Throwable th) {
+            System.err.println(th.getClass().getName() + ": " + th.getMessage());
+        }
+    }
+
+    private static void reload(final LogFactory factory, final ClassLoader tccl, final Collection<String> names) {
+        for (final String name : names) {
+            try {
+                final Field f = Class.forName(name, false, tccl).getDeclaredField("log");
+                if (!Log.class.equals(f.getType())) {
+                    continue;
+                }
+
+                final boolean acc = f.isAccessible();
+                f.setAccessible(true);
+
+                final Log newValue = factory.getInstance(name);
+                final int modifiers = f.getModifiers();
+                if (Modifier.isFinal(modifiers)) {
+                    final Field modifiersField = Field.class.getDeclaredField("modifiers");
+                    modifiersField.setAccessible(true);
+                    modifiersField.setInt(f, modifiers & ~Modifier.FINAL);
+
+                    f.set(null, newValue);
+
+                    modifiersField.setInt(f, modifiers & Modifier.FINAL);
+                } else {
+                    f.set(null, newValue);
+                }
+
+                f.setAccessible(acc);
+            } catch (final Throwable e) {
+                // no-op
+            }
+        }
+    }
+
+    private TomEELogConfigurer() {
+        // no-op
+    }
+}

Modified: tomee/tomee/trunk/tomee/tomee-loader/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/pom.xml?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/pom.xml Mon May 19 20:49:05 2014
@@ -42,12 +42,30 @@
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-catalina</artifactId>
       <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-juli</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-juli</artifactId>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>tomee-common</artifactId>
       <version>${project.version}</version>
     </dependency>
+
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>${log4j.version}</version>
+      <scope>provided</scope>
+    </dependency>
   </dependencies>
 
 </project>

Modified: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java?rev=1596054&r1=1596053&r2=1596054&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java Mon May 19 20:49:05 2014
@@ -26,6 +26,7 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.core.StandardEngine;
 import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.core.StandardServer;
+import org.apache.tomee.TomEELogConfigurer;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
@@ -88,6 +89,7 @@ public class OpenEJBListener implements 
                 properties.setProperty("openejb.embedder.source", OpenEJBListener.class.getSimpleName());
                 TomcatEmbedder.embed(properties, StandardServer.class.getClassLoader());
                 listenerInstalled = true;
+                TomEELogConfigurer.configureLogs();
             } else if (logWebappNotFound) {
                 LOGGER.info("tomee webapp not found from the listener, will try from the webapp if exists");
                 logWebappNotFound = false;

Added: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java?rev=1596054&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java (added)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java Mon May 19 20:49:05 2014
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomee.loader.log;
+
+import org.apache.juli.logging.Log;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+
+public class Log4jLog implements Log {
+    private final Logger log;
+
+    public Log4jLog(final Logger log) {
+        this.log = log;
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return log.isDebugEnabled();
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return log.isEnabledFor(Level.ERROR);
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return log.isEnabledFor(Level.FATAL);
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return log.isInfoEnabled();
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return log.isEnabledFor(Level.TRACE);
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return log.isEnabledFor(Level.WARN);
+    }
+
+    @Override
+    public void trace(final Object message) {
+        log.trace(message);
+    }
+
+    @Override
+    public void trace(final Object message, final Throwable t) {
+        log.trace(message, t);
+    }
+
+    @Override
+    public void debug(final Object message) {
+        log.debug(message);
+    }
+
+    @Override
+    public void debug(final Object message, final Throwable t) {
+        log.debug(message, t);
+    }
+
+    @Override
+    public void info(final Object message) {
+        log.info(message);
+    }
+
+    @Override
+    public void info(final Object message, final Throwable t) {
+        log.info(message, t);
+    }
+
+    @Override
+    public void warn(final Object message) {
+        log.warn(message);
+    }
+
+    @Override
+    public void warn(final Object message, final Throwable t) {
+        log.warn(message, t);
+    }
+
+    @Override
+    public void error(final Object message) {
+        log.error(message);
+    }
+
+    @Override
+    public void error(final Object message, final Throwable t) {
+        log.error(message, t);
+    }
+
+    @Override
+    public void fatal(final Object message) {
+        log.fatal(message);
+    }
+
+    @Override
+    public void fatal(final Object message, final Throwable t) {
+        log.fatal(message, t);
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLogFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLogFactory.java?rev=1596054&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLogFactory.java (added)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLogFactory.java Mon May 19 20:49:05 2014
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.loader.log;
+
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogConfigurationException;
+import org.apache.juli.logging.LogFactory;
+import org.apache.log4j.Logger;
+
+public class Log4jLogFactory extends LogFactory {
+    @Override
+    public Log getInstance(final String name) throws LogConfigurationException {
+        try {
+            return new Log4jLog(Logger.getLogger(name));
+        } catch (final Exception e) {
+            throw new IllegalStateException(e);
+        }
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java?rev=1596054&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java (added)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java Mon May 19 20:49:05 2014
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomee.loader.log;
+
+import org.apache.juli.logging.Log;
+import org.slf4j.Logger;
+
+public class Slf4jLog implements Log {
+    private final Logger log;
+
+    public Slf4jLog(final Logger log) {
+        this.log = log;
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return log.isDebugEnabled();
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return log.isErrorEnabled();
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return log.isErrorEnabled();
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return log.isInfoEnabled();
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return log.isTraceEnabled();
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return log.isWarnEnabled();
+    }
+
+    private static String m(final Object message) {
+        return message == null ? "null" : message.toString();
+    }
+
+    @Override
+    public void trace(final Object message) {
+        log.trace(m(message));
+    }
+
+    @Override
+    public void trace(final Object message, final Throwable t) {
+        log.trace(m(message), t);
+    }
+
+    @Override
+    public void debug(final Object message) {
+        log.debug(m(message));
+    }
+
+    @Override
+    public void debug(final Object message, final Throwable t) {
+        log.debug(m(message), t);
+    }
+
+    @Override
+    public void info(final Object message) {
+        log.info(m(message));
+    }
+
+    @Override
+    public void info(final Object message, final Throwable t) {
+        log.info(m(message), t);
+    }
+
+    @Override
+    public void warn(final Object message) {
+        log.warn(m(message));
+    }
+
+    @Override
+    public void warn(final Object message, final Throwable t) {
+        log.warn(m(message), t);
+    }
+
+    @Override
+    public void error(final Object message) {
+        log.error(m(message));
+    }
+
+    @Override
+    public void error(final Object message, final Throwable t) {
+        log.error(m(message), t);
+    }
+
+    @Override
+    public void fatal(final Object message) {
+        log.error(m(message));
+    }
+
+    @Override
+    public void fatal(final Object message, final Throwable t) {
+        log.error(m(message), t);
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLogFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLogFactory.java?rev=1596054&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLogFactory.java (added)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLogFactory.java Mon May 19 20:49:05 2014
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.loader.log;
+
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogConfigurationException;
+import org.apache.juli.logging.LogFactory;
+import org.slf4j.LoggerFactory;
+
+public class Slf4jLogFactory extends LogFactory {
+    @Override
+    public Log getInstance(final String name) throws LogConfigurationException {
+        try {
+            return new Slf4jLog(LoggerFactory.getLogger(name));
+        } catch (final Exception e) {
+            throw new IllegalStateException(e);
+        }
+    }
+}