Author: rmannibucau Date: Thu Oct 9 19:42:38 2014 New Revision: 1630572 URL: http://svn.apache.org/r1630572 Log: integrating MavenLogStreamFactory with tomee
Added: tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java Modified: tomee/tomee/trunk/maven/maven-util/pom.xml tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java 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 Modified: tomee/tomee/trunk/maven/maven-util/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/maven-util/pom.xml?rev=1630572&r1=1630571&r2=1630572&view=diff ============================================================================== --- tomee/tomee/trunk/maven/maven-util/pom.xml (original) +++ tomee/tomee/trunk/maven/maven-util/pom.xml Thu Oct 9 19:42:38 2014 @@ -38,5 +38,11 @@ <groupId>org.apache.openejb</groupId> <artifactId>openejb-core</artifactId> </dependency> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>tomee-juli</artifactId> + <version>${tomee.version}</version> + <scope>provided</scope> + </dependency> </dependencies> </project> Modified: tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java?rev=1630572&r1=1630571&r2=1630572&view=diff ============================================================================== --- tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java (original) +++ tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java Thu Oct 9 19:42:38 2014 @@ -17,12 +17,23 @@ package org.apache.openejb.maven.util; import org.apache.maven.plugin.logging.Log; +import org.apache.openejb.log.logger.AbstractDelegatingLogger; import org.apache.openejb.util.LogCategory; import org.apache.openejb.util.LogStream; import org.apache.openejb.util.LogStreamFactory; +import org.apache.webbeans.logger.WebBeansLoggerFacade; +import org.apache.webbeans.logger.WebBeansLoggerFactory; + +import java.util.Locale; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; public class MavenLogStreamFactory implements LogStreamFactory { private static Log logger; + static { + System.setProperty(WebBeansLoggerFacade.OPENWEBBEANS_LOGGING_FACTORY_PROP, OWBMavenLogFactory.class.getName()); + } @Override public LogStream createLogStream(final LogCategory logCategory) { @@ -33,6 +44,88 @@ public class MavenLogStreamFactory imple MavenLogStreamFactory.logger = logger; } + public static Log currentLogger() { + return logger; + } + + public static class MavenLogger extends AbstractDelegatingLogger { + public MavenLogger(final String name, final String resourceBundleName) { + super(name, resourceBundleName); + } + + @Override + public Level getLevel() { + if (logger.isDebugEnabled()) { + return Level.FINER; + } else if (logger.isInfoEnabled()) { + return Level.INFO; + } else if (logger.isWarnEnabled()) { + return Level.WARNING; + } else if (logger.isErrorEnabled()) { + return Level.SEVERE; + } + return Level.OFF; + } + + @Override + public boolean isLoggable(final Level level) { + final int i = level.intValue(); + if (i == Level.OFF.intValue()) { + return false; + } else if (i >= Level.SEVERE.intValue()) { + return logger.isErrorEnabled(); + } else if (i >= Level.WARNING.intValue()) { + return logger.isWarnEnabled(); + } else if (i >= Level.INFO.intValue()) { + return logger.isInfoEnabled(); + } + return logger.isDebugEnabled(); + } + + @Override + protected void internalLogFormatted(final String msg, final LogRecord record) { + final Level level = record.getLevel(); + final Throwable t = record.getThrown(); + if (Level.FINE.equals(level) || Level.FINER.equals(level) || Level.CONFIG.equals(level)) { + if (t == null) { + logger.debug(msg); + } else { + logger.debug(msg, t); + } + } else if (Level.INFO.equals(level)) { + if (t == null) { + logger.info(msg); + } else { + logger.info(msg, t); + } + } else if (Level.WARNING.equals(level)) { + if (t == null) { + logger.warn(msg); + } else { + logger.warn(msg, t); + } + } else if (Level.ALL.equals(level) || Level.SEVERE.equals(level)) { + if (t == null) { + logger.error(msg); + } else { + logger.error(msg, t); + } + } + } + } + + public static class OWBMavenLogFactory implements WebBeansLoggerFactory { + @Override + public Logger getLogger(final Class<?> clazz, final Locale desiredLocale) { + return new MavenLogger(clazz.getName(), "openwebbeans/Messages"); + } + + @Override + public Logger getLogger(final Class<?> clazz) { + return new MavenLogger(clazz.getName(), "openwebbeans/Messages"); + } + } + private static class MavenLogStream implements LogStream { private final Log log; Added: tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java?rev=1630572&view=auto ============================================================================== --- tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java (added) +++ tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java Thu Oct 9 19:42:38 2014 @@ -0,0 +1,115 @@ +/** + * 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.maven.util; + +import org.apache.juli.logging.Log; + +public class TomEEMavenLog implements Log { + public TomEEMavenLog(final String ignored ) { + // no-op but needed by TomEELog (reloadable feature) + } + + @Override + public boolean isDebugEnabled() { + return MavenLogStreamFactory.currentLogger().isDebugEnabled(); + } + + @Override + public boolean isErrorEnabled() { + return MavenLogStreamFactory.currentLogger().isErrorEnabled(); + } + + @Override + public boolean isFatalEnabled() { + return MavenLogStreamFactory.currentLogger().isErrorEnabled(); + } + + @Override + public boolean isInfoEnabled() { + return MavenLogStreamFactory.currentLogger().isInfoEnabled(); + } + + @Override + public boolean isTraceEnabled() { + return MavenLogStreamFactory.currentLogger().isDebugEnabled(); + } + + @Override + public boolean isWarnEnabled() { + return MavenLogStreamFactory.currentLogger().isWarnEnabled(); + } + + @Override + public void trace(final Object message) { + MavenLogStreamFactory.currentLogger().debug(String.valueOf(message)); + } + + @Override + public void trace(final Object message, final Throwable t) { + MavenLogStreamFactory.currentLogger().debug(String.valueOf(message), t); + } + + @Override + public void debug(final Object message) { + MavenLogStreamFactory.currentLogger().debug(String.valueOf(message)); + } + + @Override + public void debug(final Object message, final Throwable t) { + MavenLogStreamFactory.currentLogger().debug(String.valueOf(message), t); + } + + @Override + public void info(final Object message) { + MavenLogStreamFactory.currentLogger().info(String.valueOf(message)); + } + + @Override + public void info(final Object message, final Throwable t) { + MavenLogStreamFactory.currentLogger().info(String.valueOf(message), t); + } + + @Override + public void warn(final Object message) { + MavenLogStreamFactory.currentLogger().warn(String.valueOf(message)); + } + + @Override + public void warn(final Object message, final Throwable t) { + MavenLogStreamFactory.currentLogger().warn(String.valueOf(message), t); + } + + @Override + public void error(final Object message) { + MavenLogStreamFactory.currentLogger().error(String.valueOf(message)); + } + + @Override + public void error(final Object message, final Throwable t) { + MavenLogStreamFactory.currentLogger().error(String.valueOf(message), t); + } + + @Override + public void fatal(final Object message) { + MavenLogStreamFactory.currentLogger().error(String.valueOf(message)); + } + + @Override + public void fatal(final Object message, final Throwable t) { + MavenLogStreamFactory.currentLogger().error(String.valueOf(message), t); + } +} Modified: tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java?rev=1630572&r1=1630571&r2=1630572&view=diff ============================================================================== --- tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java (original) +++ tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java Thu Oct 9 19:42:38 2014 @@ -143,7 +143,7 @@ public class TomEEEmbeddedMojo extends A final String logFactory = System.getProperty("openejb.log.factory"); MavenLogStreamFactory.setLogger(getLog()); if (mavenLog) { - System.setProperty("openejb.log.factory", "org.apache.openejb.maven.util.MavenLogStreamFactory"); + System.setProperty("openejb.log.factory", MavenLogStreamFactory.class.getName()); // this line also preload the class (<cinit>) System.setProperty("openejb.jul.forceReload", "true"); } 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=1630572&r1=1630571&r2=1630572&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 Thu Oct 9 19:42:38 2014 @@ -41,6 +41,7 @@ public final class ReloadableLog { 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 static final String MAVEN_IMPL = "org.apache.openejb.maven.util.TomEEMavenLog"; private volatile String factory; private final String name; @@ -64,6 +65,11 @@ public final class ReloadableLog { if (f != null) { factory = f; } + + final Log log = delegate.get(); + if (factory == null && log != null) { + return log; + } } switch (factory) { case "org.apache.openejb.util.Log4jLogStreamFactory": @@ -75,6 +81,9 @@ public final class ReloadableLog { case "org.apache.openejb.util.Slf4jLogStreamFactory": delegate.set(newInstance(SLF4J_IMPL)); break; + case "org.apache.openejb.maven.util.MavenLogStreamFactory": + delegate.set(newInstance(MAVEN_IMPL)); + break; default: delegate.set(new JULLogger(name)); } 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=1630572&r1=1630571&r2=1630572&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 Thu Oct 9 19:42:38 2014 @@ -46,6 +46,7 @@ public class TomEELog implements Log { case "org.apache.openejb.util.Log4j2LogStreamFactory": case "org.apache.openejb.util.Log4jLogStreamFactory": case "org.apache.openejb.util.Slf4jLogStreamFactory": + case "org.apache.openejb.maven.util.MavenLogStreamFactory": defaultLogger = false; break; default: