Author: rmannibucau Date: Fri Aug 22 18:11:16 2014 New Revision: 1619878 URL: http://svn.apache.org/r1619878 Log: TOMEE-1327 log4j2 integration
Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4j2LoggerFactory.java - copied, changed from r1618689, tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4jLoggerFactory.java tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4j2Logger.java - copied, changed from r1618689, tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4jLogger.java tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4j2LogStreamFactory.java tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4j2Log.java - copied, changed from r1618689, tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java Modified: tomee/tomee/trunk/container/openejb-core/pom.xml tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java tomee/tomee/trunk/pom.xml tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java tomee/tomee/trunk/tomee/tomee-loader/pom.xml Modified: tomee/tomee/trunk/container/openejb-core/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/pom.xml?rev=1619878&r1=1619877&r2=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/pom.xml (original) +++ tomee/tomee/trunk/container/openejb-core/pom.xml Fri Aug 22 18:11:16 2014 @@ -430,6 +430,12 @@ <scope>provided</scope> </dependency> <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <version>${log4j2.version}</version> + <scope>provided</scope> + </dependency> + <dependency> <artifactId>commons-lang3</artifactId> <groupId>org.apache.commons</groupId> </dependency> Copied: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4j2LoggerFactory.java (from r1618689, tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4jLoggerFactory.java) URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4j2LoggerFactory.java?p2=tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4j2LoggerFactory.java&p1=tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4jLoggerFactory.java&r1=1618689&r2=1619878&rev=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4jLoggerFactory.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/logging/Log4j2LoggerFactory.java Fri Aug 22 18:11:16 2014 @@ -17,21 +17,21 @@ package org.apache.openejb.cdi.logging; -import org.apache.openejb.log.logger.Log4jLogger; +import org.apache.openejb.log.logger.Log4j2Logger; import org.apache.webbeans.logger.WebBeansLoggerFactory; import java.util.Locale; import java.util.ResourceBundle; import java.util.logging.Logger; -public class Log4jLoggerFactory implements WebBeansLoggerFactory { +public class Log4j2LoggerFactory implements WebBeansLoggerFactory { @Override public Logger getLogger(final Class<?> clazz, final Locale desiredLocale) { - return new Log4jLogger(clazz.getName(), ResourceBundle.getBundle("openwebbeans/Messages", desiredLocale).toString()); + return new Log4j2Logger(clazz.getName(), ResourceBundle.getBundle("openwebbeans/Messages", desiredLocale).toString()); } @Override public Logger getLogger(final Class<?> clazz) { - return new Log4jLogger(clazz.getName(), "openwebbeans/Messages"); + return new Log4j2Logger(clazz.getName(), "openwebbeans/Messages"); } } Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java?rev=1619878&r1=1619877&r2=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java Fri Aug 22 18:11:16 2014 @@ -41,7 +41,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReentrantLock; Copied: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4j2Logger.java (from r1618689, tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4jLogger.java) URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4j2Logger.java?p2=tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4j2Logger.java&p1=tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4jLogger.java&r1=1618689&r2=1619878&rev=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4jLogger.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/logger/Log4j2Logger.java Fri Aug 22 18:11:16 2014 @@ -17,185 +17,82 @@ package org.apache.openejb.log.logger; -import org.apache.log4j.Appender; -import org.apache.log4j.AppenderSkeleton; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.apache.log4j.Priority; -import org.apache.log4j.spi.LoggingEvent; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Enumeration; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; -/** - * java.util.logging.Logger implementation delegating to Log4j. - * All methods can be used except: - * setLevel - * addHandler / getHandlers - * setParent / getParent - * setUseParentHandlers / getUseParentHandlers - * - * @author gnodet - */ -public class Log4jLogger extends AbstractDelegatingLogger { - private static final Map<Level, org.apache.log4j.Level> TO_LOG4J = new HashMap<Level, org.apache.log4j.Level>(); - private static final org.apache.log4j.Level TRACE; +public class Log4j2Logger extends AbstractDelegatingLogger { + private static final Map<Level, org.apache.logging.log4j.Level> TO_LOG4J = new HashMap<>(); private final Logger log; static { //older versions of log4j don't have TRACE, use debug - org.apache.log4j.Level t = org.apache.log4j.Level.DEBUG; - try { - final Field f = org.apache.log4j.Level.class.getField("TRACE"); - t = (org.apache.log4j.Level) f.get(null); - } catch (final Throwable ex) { - //ignore, assume old version of log4j - } - TRACE = t; + org.apache.logging.log4j.Level t = org.apache.logging.log4j.Level.DEBUG; - TO_LOG4J.put(Level.ALL, org.apache.log4j.Level.ALL); - TO_LOG4J.put(Level.SEVERE, org.apache.log4j.Level.ERROR); - TO_LOG4J.put(Level.WARNING, org.apache.log4j.Level.WARN); - TO_LOG4J.put(Level.INFO, org.apache.log4j.Level.INFO); - TO_LOG4J.put(Level.CONFIG, org.apache.log4j.Level.DEBUG); - TO_LOG4J.put(Level.FINE, org.apache.log4j.Level.DEBUG); - TO_LOG4J.put(Level.FINER, TRACE); - TO_LOG4J.put(Level.FINEST, TRACE); - TO_LOG4J.put(Level.OFF, org.apache.log4j.Level.OFF); + TO_LOG4J.put(Level.ALL, org.apache.logging.log4j.Level.ALL); + TO_LOG4J.put(Level.SEVERE, org.apache.logging.log4j.Level.ERROR); + TO_LOG4J.put(Level.WARNING, org.apache.logging.log4j.Level.WARN); + TO_LOG4J.put(Level.INFO, org.apache.logging.log4j.Level.INFO); + TO_LOG4J.put(Level.CONFIG, org.apache.logging.log4j.Level.DEBUG); + TO_LOG4J.put(Level.FINE, org.apache.logging.log4j.Level.DEBUG); + TO_LOG4J.put(Level.FINER, org.apache.logging.log4j.Level.TRACE); + TO_LOG4J.put(Level.FINEST, org.apache.logging.log4j.Level.TRACE); + TO_LOG4J.put(Level.OFF, org.apache.logging.log4j.Level.OFF); } - public Log4jLogger(final String name, final String resourceBundleName) { + public Log4j2Logger(final String name, final String resourceBundleName) { super(name, resourceBundleName); log = LogManager.getLogger(name); } public Level getLevel() { - final org.apache.log4j.Level l = log.getEffectiveLevel(); + final org.apache.logging.log4j.Level l = log.getLevel(); if (l != null) { return fromL4J(l); } return null; } - public void setLevel(final Level newLevel) throws SecurityException { - log.setLevel(TO_LOG4J.get(newLevel)); - } - - public synchronized void addHandler(final Handler handler) throws SecurityException { - log.addAppender(new HandlerWrapper(handler)); - } - - public synchronized void removeHandler(final Handler handler) throws SecurityException { - log.removeAppender("HandlerWrapper-" + handler.hashCode()); - } - - public synchronized Handler[] getHandlers() { - final List<Handler> ret = new ArrayList<Handler>(); - final Enumeration<?> en = log.getAllAppenders(); - while (en.hasMoreElements()) { - final Appender ap = (Appender) en.nextElement(); - if (ap instanceof HandlerWrapper) { - ret.add(((HandlerWrapper) ap).getHandler()); - } - } - return ret.toArray(new Handler[ret.size()]); - } - protected void internalLogFormatted(final String msg, final LogRecord record) { - log.log(AbstractDelegatingLogger.class.getName(), - TO_LOG4J.get(record.getLevel()), - msg, - record.getThrown()); + log.log(TO_LOG4J.get(record.getLevel()), msg, record.getThrown()); } - private Level fromL4J(final org.apache.log4j.Level l) { + private Level fromL4J(final org.apache.logging.log4j.Level l) { Level l2 = null; - switch (l.toInt()) { - case org.apache.log4j.Level.ALL_INT: + switch (l.getStandardLevel()) { + case ALL: l2 = Level.ALL; break; - case org.apache.log4j.Level.FATAL_INT: + case FATAL: l2 = Level.SEVERE; break; - case org.apache.log4j.Level.ERROR_INT: + case ERROR: l2 = Level.SEVERE; break; - case org.apache.log4j.Level.WARN_INT: + case WARN: l2 = Level.WARNING; break; - case org.apache.log4j.Level.INFO_INT: + case INFO: l2 = Level.INFO; break; - case org.apache.log4j.Level.DEBUG_INT: + case DEBUG: l2 = Level.FINE; break; - case org.apache.log4j.Level.OFF_INT: + case OFF: l2 = Level.OFF; break; + case TRACE: + l2 = Level.FINEST; + break; default: - if (l.toInt() == TRACE.toInt()) { - l2 = Level.FINEST; - } + l2 = Level.FINE; } return l2; } - - - private class HandlerWrapper extends AppenderSkeleton { - Handler handler; - - public HandlerWrapper(final Handler h) { - handler = h; - name = "HandlerWrapper-" + h.hashCode(); - } - - public Handler getHandler() { - return handler; - } - - @Override - protected void append(final LoggingEvent event) { - final LogRecord lr = new LogRecord(fromL4J(event.getLevel()), - event.getMessage().toString()); - lr.setLoggerName(event.getLoggerName()); - if (event.getThrowableInformation() != null) { - lr.setThrown(event.getThrowableInformation().getThrowable()); - } - final String rbname = getResourceBundleName(); - if (rbname != null) { - lr.setResourceBundleName(rbname); - lr.setResourceBundle(getResourceBundle()); - } - handler.publish(lr); - } - - public void close() { - handler.close(); - closed = true; - } - - public boolean requiresLayout() { - return false; - } - - @Override - public Priority getThreshold() { - return TO_LOG4J.get(handler.getLevel()); - } - - @Override - public boolean isAsSevereAsThreshold(final Priority priority) { - final Priority p = getThreshold(); - return p == null || priority.isGreaterOrEqual(p); - } - } } Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java?rev=1619878&r1=1619877&r2=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java Fri Aug 22 18:11:16 2014 @@ -73,7 +73,6 @@ import org.apache.webbeans.spi.ContextsS import org.apache.webbeans.spi.LoaderService; import org.apache.webbeans.web.lifecycle.test.MockHttpSession; import org.apache.webbeans.web.lifecycle.test.MockServletContext; -import org.apache.xbean.finder.Annotated; import org.apache.xbean.finder.AnnotationFinder; import org.apache.xbean.finder.ClassFinder; import org.apache.xbean.finder.IAnnotationFinder; @@ -85,8 +84,6 @@ import org.apache.xbean.finder.archive.C import org.apache.xbean.finder.archive.JarArchive; import org.xml.sax.InputSource; -import javax.ejb.Singleton; -import javax.ejb.Stateless; import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.RequestScoped; import javax.enterprise.context.SessionScoped; Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4j2LogStreamFactory.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4j2LogStreamFactory.java?rev=1619878&view=auto ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4j2LogStreamFactory.java (added) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4j2LogStreamFactory.java Fri Aug 22 18:11:16 2014 @@ -0,0 +1,102 @@ +/* + * 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.openejb.util; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +// don't do the same "error" (historical actually) that in log4j one putting too much logic here +public class Log4j2LogStreamFactory implements LogStreamFactory { + public Log4j2LogStreamFactory() { + // WARN: don't set all subproject loggers to log4j since API is not the same + // and it needs log4j1 fallback module to "work" (some parts are broken like config) + System.setProperty("openwebbeans.logging.factory", "org.apache.openejb.cdi.logging.Log4j2LoggerFactory"); + } + + @Override + public LogStream createLogStream(final LogCategory logCategory) { + return new Log4j2Stream(logCategory.getName()); + } + + private class Log4j2Stream implements LogStream { + private final Logger delegate; + + public Log4j2Stream(final String name) { + this.delegate = LogManager.getLogger(name); + } + + public boolean isFatalEnabled() { + return delegate.isFatalEnabled(); + } + + public void fatal(final String message) { + delegate.fatal(message); + } + + public void fatal(final String message, final Throwable t) { + delegate.fatal(message, t); + } + + public boolean isErrorEnabled() { + return delegate.isErrorEnabled(); + } + + public void error(final String message) { + delegate.error(message); + } + + public void error(final String message, final Throwable t) { + delegate.error(message, t); + } + + public boolean isWarnEnabled() { + return delegate.isWarnEnabled(); + } + + public void warn(final String message) { + delegate.warn(message); + } + + public void warn(final String message, final Throwable t) { + delegate.warn(message, t); + } + + public boolean isInfoEnabled() { + return delegate.isInfoEnabled(); + } + + public void info(final String message) { + delegate.info(message); + } + + public void info(final String message, final Throwable t) { + delegate.info(message, t); + } + + public boolean isDebugEnabled() { + return delegate.isDebugEnabled(); + } + + public void debug(final String message) { + delegate.debug(message); + } + + public void debug(final String message, final Throwable t) { + delegate.debug(message, t); + } + } +} 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=1619878&r1=1619877&r2=1619878&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 Fri Aug 22 18:11:16 2014 @@ -55,15 +55,10 @@ public class Logger { //See if user factory has been specified String factoryName = SystemInstance.get().getOptions().get("openejb.log.factory", JuliLogStreamFactory.class.getName()); - if ("jul".equalsIgnoreCase(factoryName) || "juli".equalsIgnoreCase(factoryName)) { - factoryName = JuliLogStreamFactory.class.getName(); - } else if ("slf4j".equalsIgnoreCase(factoryName)) { - factoryName = Slf4jLogStreamFactory.class.getName(); - } else if ("log4j".equalsIgnoreCase(factoryName)) { if (exists("org.apache.log4j.Logger")) { @@ -78,8 +73,9 @@ public class Logger { } } else if ("pax".equalsIgnoreCase(factoryName)) { - factoryName = "org.apache.openejb.util.PaxLogStreamFactory"; + } else if ("log4j2".equalsIgnoreCase(factoryName)) { + factoryName = "org.apache.openejb.util.Log4j2LogStreamFactory"; } if (factoryName != null) { Modified: tomee/tomee/trunk/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/pom.xml?rev=1619878&r1=1619877&r2=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/pom.xml (original) +++ tomee/tomee/trunk/pom.xml Fri Aug 22 18:11:16 2014 @@ -175,6 +175,7 @@ <mojarra.version>2.1.28</mojarra.version> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> + <log4j2.version>2.0.1</log4j2.version> <osgi.framework.version>4.2.0</osgi.framework.version> <version.hsqldb>2.3.2</version.hsqldb> <version.axiom>1.2.14</version.axiom> Modified: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java?rev=1619878&r1=1619877&r2=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java (original) +++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java Fri Aug 22 18:11:16 2014 @@ -17,6 +17,7 @@ package org.apache.tomee.jul.formatter.log; import org.apache.juli.logging.Log; +import org.apache.openejb.loader.SystemInstance; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; @@ -39,9 +40,10 @@ public final class ReloadableLog { private static final class ReloadableLogHandler implements InvocationHandler { private static final String LOG4J_IMPL = "org.apache.tomee.loader.log.Log4jLog"; + private static final String LOG4J2_IMPL = "org.apache.tomee.loader.log.Log4j2Log"; private static final String SLF4J_IMPL = "org.apache.tomee.loader.log.Slf4jLog"; - private final String factory; + private volatile String factory; private final String name; private final AtomicReference<Log> delegate = new AtomicReference<>(); private volatile boolean done = false; @@ -58,9 +60,19 @@ public final class ReloadableLog { } try { + if (factory == null) { + final String f = TomEELog.getLoggerClazz(); + if (f != null) { + factory = f; + } + } switch (factory) { case "org.apache.openejb.util.Log4jLogStreamFactory": - delegate.set(newInstance(LOG4J_IMPL)); break; + delegate.set(newInstance(LOG4J_IMPL)); + break; + case "org.apache.openejb.util.Log4j2LogStreamFactory": + delegate.set(newInstance(LOG4J2_IMPL)); + break; case "org.apache.openejb.util.Slf4jLogStreamFactory": delegate.set(newInstance(SLF4J_IMPL)); break; Modified: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java?rev=1619878&r1=1619877&r2=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java (original) +++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java Fri Aug 22 18:11:16 2014 @@ -34,29 +34,34 @@ public class TomEELog implements Log { final Thread thread = Thread.currentThread(); try { final ClassLoader tccl = thread.getContextClassLoader(); + final Class<?> systemInstance = tccl.loadClass("org.apache.openejb.loader.SystemInstance"); + if (!Boolean.class.cast(systemInstance.getMethod("isInitialized").invoke(null))) { + return; + } + final Class<?> logger = tccl.loadClass("org.apache.openejb.util.Logger"); final Method m = logger.getDeclaredMethod("delegateClass"); loggerClazz = (String) m.invoke(null); switch (loggerClazz) { + case "org.apache.openejb.util.Log4j2LogStreamFactory": case "org.apache.openejb.util.Log4jLogStreamFactory": - defaultLogger = false; - initialized = true; - return; case "org.apache.openejb.util.Slf4jLogStreamFactory": defaultLogger = false; - initialized = true; - return; + break; default: defaultLogger = true; - initialized = true; - return; } + initialized = true; } catch (final Throwable th) { // no-op } } } + public static String getLoggerClazz() { + return loggerClazz; + } + private final Log delegate; public TomEELog() { // for ServiceLoader Modified: tomee/tomee/trunk/tomee/tomee-loader/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/pom.xml?rev=1619878&r1=1619877&r2=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-loader/pom.xml (original) +++ tomee/tomee/trunk/tomee/tomee-loader/pom.xml Fri Aug 22 18:11:16 2014 @@ -54,6 +54,12 @@ <artifactId>log4j</artifactId> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <version>${log4j2.version}</version> + <scope>provided</scope> + </dependency> </dependencies> </project> Copied: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4j2Log.java (from r1618689, 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/Log4j2Log.java?p2=tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4j2Log.java&p1=tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java&r1=1618689&r2=1619878&rev=1619878&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java (original) +++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4j2Log.java Fri Aug 22 18:11:16 2014 @@ -18,14 +18,14 @@ package org.apache.tomee.loader.log; import org.apache.juli.logging.Log; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -public class Log4jLog implements Log { +public class Log4j2Log implements Log { private final Logger log; - public Log4jLog(final String logger) { - this.log = Logger.getLogger(logger); + public Log4j2Log(final String logger) { + this.log = LogManager.getLogger(logger); } @Override @@ -35,12 +35,12 @@ public class Log4jLog implements Log { @Override public boolean isErrorEnabled() { - return log.isEnabledFor(Level.ERROR); + return log.isErrorEnabled(); } @Override public boolean isFatalEnabled() { - return log.isEnabledFor(Level.FATAL); + return log.isFatalEnabled(); } @Override @@ -50,12 +50,12 @@ public class Log4jLog implements Log { @Override public boolean isTraceEnabled() { - return log.isEnabledFor(Level.TRACE); + return log.isTraceEnabled(); } @Override public boolean isWarnEnabled() { - return log.isEnabledFor(Level.WARN); + return log.isWarnEnabled(); } @Override