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);
+ }
+ }
+}