TOMEE-724 simpleLog for tomee + internal agnotisc log when init phase of a webapp is hitten
git-svn-id: https://svn.apache.org/repos/asf/openejb/trunk@1431964 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java b/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
index ce5164d..a2c838a 100644
--- a/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
+++ b/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
@@ -23,14 +23,13 @@
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 @@
}
container = new RemoteServer();
- container.setAdditionalClasspath(addOneLineFormatter(tomeeHome));
+ container.setAdditionalClasspath(InstallationEnrichers.addOneLineFormatter(tomeeHome));
container.start(args(), "start", true);
container.killOnExit();
@@ -110,28 +109,6 @@
}
}
- 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()) {
diff --git a/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java b/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
index edcef19..343629d 100644
--- a/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
+++ b/openejb/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
@@ -33,7 +33,9 @@
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.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 @@
@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 @@
protected Settings settings;
protected File deployedFile = null;
+ private String additionalCp = null;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
@@ -236,6 +243,10 @@
}
}
+ if (simpleLog) {
+ additionalCp = activateSimpleLog();
+ }
+
if (!keepServerXmlAsthis) {
overrideAddresses();
}
@@ -245,6 +256,31 @@
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 @@
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;
diff --git a/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index 08e50fb..a9f942f 100644
--- a/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -698,7 +698,7 @@
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);
diff --git a/openejb/tomee/tomee-util/pom.xml b/openejb/tomee/tomee-util/pom.xml
index 27465f9..713b2a0 100644
--- a/openejb/tomee/tomee-util/pom.xml
+++ b/openejb/tomee/tomee-util/pom.xml
@@ -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>
diff --git a/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java b/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java
new file mode 100644
index 0000000..c802060
--- /dev/null
+++ b/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/InstallationEnrichers.java
@@ -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;
+ }
+}
diff --git a/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java b/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java
new file mode 100644
index 0000000..29985a5
--- /dev/null
+++ b/openejb/tomee/tomee-util/src/main/java/org/apache/tomee/util/SimpleTomEEFormatter.java
@@ -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();
+ }
+}