Author: rmannibucau Date: Fri Jan 11 10:01:25 2013 New Revision: 1431964 URL: http://svn.apache.org/viewvc?rev=1431964&view=rev Log: TOMEE-724 simpleLog for tomee + internal agnotisc log when init phase of a webapp is hitten
Added: openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java openejb/trunk/openejb/tomee/tomee-util/pom.xml Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1431964&r1=1431963&r2=1431964&view=diff ============================================================================== --- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java (original) +++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java Fri Jan 11 10:01:25 2013 @@ -23,14 +23,13 @@ import org.apache.openejb.arquillian.com import org.apache.openejb.arquillian.common.TomEEContainer; import org.apache.openejb.assembler.Deployer; import org.apache.openejb.config.RemoteServer; -import org.jboss.arquillian.container.spi.client.container.DeploymentException; +import org.apache.tomee.util.InstallationEnrichers; import org.jboss.arquillian.container.spi.client.container.LifecycleException; import org.jboss.shrinkwrap.api.Archive; import javax.naming.NamingException; import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -85,7 +84,7 @@ public class RemoteTomEEContainer extend } container = new RemoteServer(); - container.setAdditionalClasspath(addOneLineFormatter(tomeeHome)); + container.setAdditionalClasspath(InstallationEnrichers.addOneLineFormatter(tomeeHome)); container.start(args(), "start", true); container.killOnExit(); @@ -110,28 +109,6 @@ public class RemoteTomEEContainer extend } } - private String addOneLineFormatter(final File home) { - final String name = SimpleTomEEFormatter.class.getPackage().getName().replace('.', '/') + "/" + SimpleTomEEFormatter.class.getSimpleName() + ".class"; - final InputStream is = getClass().getResourceAsStream("/" + name); - if (is != null) { - final File parent = Files.path(home, "bin", "classes"); - final File destination = new File(parent, name); - if (!destination.getParentFile().mkdirs()) { - LOGGER.warning("Can't create " + destination.getPath()); - } else { - try { - IO.copy(is, destination); - return parent.getAbsolutePath(); // to add to the classpath, don't return destination - } catch (IOException e) { - LOGGER.log(Level.WARNING, "Can't add SingleLineFormatter", e); - } finally { - IO.closeSilently(is); - } - } - } - return null; - } - private List<String> args() { String opts = configuration.getCatalina_opts(); if (opts == null || (opts = opts.trim()).isEmpty()) { Modified: openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1431964&r1=1431963&r2=1431964&view=diff ============================================================================== --- openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java (original) +++ openejb/trunk/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java Fri Jan 11 10:01:25 2013 @@ -33,7 +33,9 @@ import org.apache.openejb.loader.Files; import org.apache.openejb.loader.IO; import org.apache.openejb.loader.Zips; import org.apache.openejb.util.OpenEjbVersion; +import org.apache.tomee.util.InstallationEnrichers; import org.apache.tomee.util.QuickServerXmlParser; +import org.apache.tomee.util.SimpleTomEEFormatter; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -56,6 +58,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.concurrent.CountDownLatch; +import java.util.logging.SimpleFormatter; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -127,6 +130,9 @@ public abstract class AbstractTomEEMojo @Parameter(property = "tomee-plugin.debug", defaultValue = "false") protected boolean debug; + @Parameter(property = "tomee-plugin.simple-log", defaultValue = "false") + protected boolean simpleLog; + @Parameter(property = "tomee-plugin.debugPort", defaultValue = "5005") protected int debugPort; @@ -209,6 +215,7 @@ public abstract class AbstractTomEEMojo protected Settings settings; protected File deployedFile = null; + private String additionalCp = null; @Override public void execute() throws MojoExecutionException, MojoFailureException { @@ -236,6 +243,10 @@ public abstract class AbstractTomEEMojo } } + if (simpleLog) { + additionalCp = activateSimpleLog(); + } + if (!keepServerXmlAsthis) { overrideAddresses(); } @@ -245,6 +256,31 @@ public abstract class AbstractTomEEMojo run(); } + private String activateSimpleLog() { + // adding SimpleTomEEFormatter to the classpath + final String cp = InstallationEnrichers.addOneLineFormatter(catalinaBase); + + // replacing java.util.logging.SimpleFormatter by SimpleTomEEFormatter + final File loggingProperties = new File(catalinaBase, "conf/logging.properties"); + if (loggingProperties.exists() && !new File(config, "conf/logging.properties").exists()) { + try { + final String content = IO.slurp(loggingProperties) + .replace(SimpleFormatter.class.getName(), SimpleTomEEFormatter.class.getName()); + final FileWriter writer = new FileWriter(loggingProperties); + try { + writer.write(content); + } finally { + IO.close(writer); + } + } catch (Exception e) { + getLog().error("Can't set SimpleTomEEFormatter", e); + return null; + } + return cp; + } + return null; + } + private void removeDefaultWebapps(final boolean removeTomee) { final File webapps = new File(catalinaBase, webappDir); if (webapps.isDirectory()) { @@ -570,6 +606,9 @@ public abstract class AbstractTomEEMojo System.setProperty("server.shutdown.port", Integer.toString(tomeeShutdownPort)); final RemoteServer server = new RemoteServer(getConnectAttempts(), false); + if (additionalCp != null) { + server.setAdditionalClasspath(additionalCp); + } addShutdownHooks(server); // some shutdown hooks are always added (see UpdatableTomEEMojo) final CountDownLatch stopCondition; Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1431964&r1=1431963&r2=1431964&view=diff ============================================================================== --- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original) +++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Fri Jan 11 10:01:25 2013 @@ -698,7 +698,7 @@ public class TomcatWebAppBuilder impleme if (isIgnored(standardContext)) return; // just adding a carriage return to get logs more readable - logger.info("-------------------------\nTomcatWebAppBuilder.init " + finalName(standardContext.getPath())); + logger.info("------------------------- " + finalName(standardContext.getPath())); if (FORCE_RELOADABLE) { standardContext.setReloadable(true); Modified: openejb/trunk/openejb/tomee/tomee-util/pom.xml URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-util/pom.xml?rev=1431964&r1=1431963&r2=1431964&view=diff ============================================================================== --- openejb/trunk/openejb/tomee/tomee-util/pom.xml (original) +++ openejb/trunk/openejb/tomee/tomee-util/pom.xml Fri Jan 11 10:01:25 2013 @@ -28,4 +28,13 @@ <artifactId>tomee-util</artifactId> <name>OpenEJB :: TomEE :: Util</name> + + <dependencies> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>openejb-loader</artifactId> + <version>4.5.2-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + </dependencies> </project> Added: openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java?rev=1431964&view=auto ============================================================================== --- openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java (added) +++ openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java Fri Jan 11 10:01:25 2013 @@ -0,0 +1,42 @@ +package org.apache.tomee.util; + +import org.apache.openejb.loader.Files; +import org.apache.openejb.loader.IO; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class InstallationEnrichers { + private InstallationEnrichers() { + // no-op + } + + public static String addOneLineFormatter(final File home) { + final String name = SimpleTomEEFormatter.class.getPackage().getName().replace('.', '/') + "/" + SimpleTomEEFormatter.class.getSimpleName() + ".class"; + final InputStream is = InstallationEnrichers.class.getResourceAsStream("/" + name); + if (is != null) { + final File parent = Files.path(home, "bin", "classes"); + final File destination = new File(parent, name); + if (destination.exists()) { + return parent.getAbsolutePath(); + } + + if (!destination.getParentFile().mkdirs()) { + Logger.getLogger(InstallationEnrichers.class.getName()).warning("Can't create " + destination.getPath()); + } else { + try { + IO.copy(is, destination); + return parent.getAbsolutePath(); // to add to the classpath, don't return destination + } catch (IOException e) { + Logger.getLogger(InstallationEnrichers.class.getName()).log(Level.WARNING, "Can't add SingleLineFormatter", e); + } finally { + IO.close(is); + } + } + } + return null; + } +} Added: openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java?rev=1431964&view=auto ============================================================================== --- openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java (added) +++ openejb/trunk/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java Fri Jan 11 10:01:25 2013 @@ -0,0 +1,31 @@ +package org.apache.tomee.util; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.logging.LogRecord; + +public class SimpleTomEEFormatter extends java.util.logging.Formatter { + private static final String LN = System.getProperty("line.separator"); + + @Override + public synchronized String format(LogRecord record) { + final Throwable thrown = record.getThrown(); + final StringBuilder sbuf = new StringBuilder(); + sbuf.append(record.getLevel().getLocalizedName()); + sbuf.append(" - "); + sbuf.append(formatMessage(record)); + sbuf.append(LN); + if (thrown != null) { + try { + final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + thrown.printStackTrace(pw); + pw.close(); + sbuf.append(sw.toString()); + } catch (Exception ex) { + // no-op + } + } + return sbuf.toString(); + } +}