Repository: logging-log4j2
Updated Branches:
  refs/heads/master 9422ca748 -> 3cb6238c1


LOG4J2-2025 - Provide support for overriding the Tomcat Log class in Tomcat 
8.5+.


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3cb6238c
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3cb6238c
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3cb6238c

Branch: refs/heads/master
Commit: 3cb6238c148f529abb97a4894e36bf7c764ee60b
Parents: 9422ca7
Author: Ralph Goers <[email protected]>
Authored: Mon Sep 11 00:01:58 2017 -0700
Committer: Ralph Goers <[email protected]>
Committed: Mon Sep 11 00:01:58 2017 -0700

----------------------------------------------------------------------
 .../org/apache/logging/log4j/LogManager.java    |  25 +++
 log4j-appserver/pom.xml                         | 211 +++++++++++++++++++
 .../log4j/appserver/tomcat/TomcatLogger.java    | 189 +++++++++++++++++
 .../log4j/appserver/tomcat/package-info.java    |  20 ++
 .../services/org.apache.juli.logging.Log        |   1 +
 log4j-appserver/src/site/markdown/index.md.vm   |  46 ++++
 log4j-appserver/src/site/site.xml               |  52 +++++
 log4j-distribution/pom.xml                      |  19 +-
 pom.xml                                         |   1 +
 src/changes/changes.xml                         |   5 +-
 src/site/site.xml                               |   1 +
 11 files changed, 568 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
index 3f366bb..ecff443 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/LogManager.java
@@ -333,6 +333,31 @@ public class LogManager {
         }
     }
 
+
+    /**
+     * Returns a LoggerContext
+     *
+     * @param fqcn The fully qualified class name of the Class that this 
method is a member of.
+     * @param loader The ClassLoader for the context. If null the context will 
attempt to determine the appropriate
+     *            ClassLoader.
+     * @param currentContext if false the LoggerContext appropriate for the 
caller of this method is returned. For
+     *            example, in a web application if the caller is a class in 
WEB-INF/lib then one LoggerContext may be
+     *            returned and if the caller is a class in the container's 
classpath then a different LoggerContext may
+     *            be returned. If true then only a single LoggerContext will 
be returned.
+     * @param configLocation The URI for the configuration to use.
+     * @param name The LoggerContext name.
+     * @return a LoggerContext.
+     */
+    protected static LoggerContext getContext(final String fqcn, final 
ClassLoader loader,
+                                              final boolean currentContext, 
URI configLocation, String name) {
+        try {
+            return factory.getContext(fqcn, loader, null, currentContext, 
configLocation, name);
+        } catch (final IllegalStateException ex) {
+            LOGGER.warn(ex.getMessage() + " Using SimpleLogger");
+            return new SimpleLoggerContextFactory().getContext(fqcn, loader, 
null, currentContext);
+        }
+    }
+
     /**
      * Shutdown using the LoggerContext appropriate for the caller of this 
method.
      * This is equivalent to calling {@code LogManager.shutdown(false)}.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-appserver/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-appserver/pom.xml b/log4j-appserver/pom.xml
new file mode 100644
index 0000000..34822ef
--- /dev/null
+++ b/log4j-appserver/pom.xml
@@ -0,0 +1,211 @@
+<?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/xsd/maven-4.0.0.xsd";>
+  <parent>
+    <artifactId>log4j</artifactId>
+    <groupId>org.apache.logging.log4j</groupId>
+    <version>2.9.1-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>log4j-appserver</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache Log4j App Server Support</name>
+  <description>Provide Log4j as the logging implementation for application 
servers</description>
+
+  <properties>
+    <log4jParentDir>${basedir}/..</log4jParentDir>
+    <docLabel>Web Documentation</docLabel>
+    <projectDir>/log4j-appserver</projectDir>
+    <tomcat.version>8.5.20</tomcat.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+      <version>3.0.1</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-catalina</artifactId>
+      <version>${tomcat.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-annotations-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-jsp-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.tomcat</groupId>
+          <artifactId>tomcat-el-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <!-- Test dependencies -->
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <configuration>
+          <instructions>
+            <!-- we compile against 3.0, but require 2.5 minimum -->
+            <Fragment-Host>org.apache.logging.log4j.core</Fragment-Host>
+            <Import-Package>javax.servlet;version="[2.5,4)",*</Import-Package>
+            <Export-Package>org.apache.logging.log4j.web</Export-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-changes-plugin</artifactId>
+        <version>${changes.plugin.version}</version>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>changes-report</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+        <configuration>
+          <issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate>
+          <useJql>true</useJql>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <version>${checkstyle.plugin.version}</version>
+        <configuration>
+          
<!--<propertiesLocation>${vfs.parent.dir}/checkstyle.properties</propertiesLocation>
 -->
+          <configLocation>${log4jParentDir}/checkstyle.xml</configLocation>
+          
<suppressionsLocation>${log4jParentDir}/checkstyle-suppressions.xml</suppressionsLocation>
+          <enableRulesSummary>false</enableRulesSummary>
+          <propertyExpansion>basedir=${basedir}</propertyExpansion>
+          
<propertyExpansion>licensedir=${log4jParentDir}/checkstyle-header.txt</propertyExpansion>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>${javadoc.plugin.version}</version>
+        <configuration>
+          <bottom><![CDATA[<p align="center">Copyright &#169; 
{inceptionYear}-{currentYear} {organizationName}. All Rights Reserved.<br />
+            Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather 
logo, the Apache Logging project logo,
+            and the Apache Log4j logo are trademarks of The Apache Software 
Foundation.</p>]]></bottom>
+          <!-- module link generation is completely broken in the javadoc 
plugin for a multi-module non-aggregating
+               project -->
+          <detectOfflineLinks>false</detectOfflineLinks>
+          <linksource>true</linksource>
+          <links>
+            <link>http://docs.oracle.com/javaee/6/api/</link>
+          </links>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <id>non-aggregate</id>
+            <reports>
+              <report>javadoc</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>findbugs-maven-plugin</artifactId>
+        <version>${findbugs.plugin.version}</version>
+        <configuration>
+          <fork>true</fork>
+          <jvmArgs>-Duser.language=en</jvmArgs>
+          <threshold>Normal</threshold>
+          <effort>Default</effort>
+          
<excludeFilterFile>${log4jParentDir}/findbugs-exclude-filter.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jxr-plugin</artifactId>
+        <version>${jxr.plugin.version}</version>
+        <reportSets>
+          <reportSet>
+            <id>non-aggregate</id>
+            <reports>
+              <report>jxr</report>
+            </reports>
+          </reportSet>
+          <reportSet>
+            <id>aggregate</id>
+            <reports>
+              <report>aggregate</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-pmd-plugin</artifactId>
+        <version>${pmd.plugin.version}</version>
+        <configuration>
+          <targetJdk>${maven.compiler.target}</targetJdk>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+</project>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
----------------------------------------------------------------------
diff --git 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
new file mode 100644
index 0000000..f2b66d2
--- /dev/null
+++ 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/TomcatLogger.java
@@ -0,0 +1,189 @@
+/*
+ * 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.logging.log4j.appserver.tomcat;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import org.apache.juli.logging.Log;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.spi.ExtendedLogger;
+import org.apache.logging.log4j.spi.LoggerContext;
+
+/**
+ * Implements the Log interface from Tomcat 8.5 and greater.
+ *
+ * In order to use this class to cause Tomcat to use Log4j for logging, the 
jar containing this class as well as the
+ * log4j-api and log4j-core jars must be added to Tomcat's boot classpath. 
This is most easily accomplished by
+ * placing these jars in a directory and then adding the contents of that 
directory to the CLASSPATH
+ * environment variable in setenv.sh in Tomcat's bin directory.
+ *
+ * The Log4j configuration file must also be present on the classpath. This 
implementation will use the
+ * first file it finds with one of the following file names: 
log4j2-tomcat.xml, log4j2-tomcat.json,
+ * log4j2-tomcat.yaml, log4j2-tomcat.yml, log4j2-tomcat.properties. Again, 
this can be accomplished by adding
+ * this file to a directory and then adding that directory to the CLASSPATH 
environment variable in setenv.sh.
+ */
+public class TomcatLogger implements Log {
+
+    private static final long serialVersionUID = 1L;
+    private static final String FQCN = TomcatLogger.class.getName();
+    private static final String[] FILE_NAMES = {
+        "log4j2-tomcat.xml", "log4j2-tomcat.json", "log4j2-tomcat.yaml", 
"log4j2-tomcat.yml",
+        "log4j2-tomcat.properties"
+    };
+
+    private final ExtendedLogger logger;
+
+    /**
+     * This constructor is used by ServiceLoader to load an instance of the 
class.
+     */
+    public TomcatLogger() {
+        logger = null;
+    }
+
+    /**
+     * This constructor is used by LogFactory to create a new Logger.
+     * @param name The name of the Logger.
+     */
+    public TomcatLogger(String name) {
+        this.logger = PrivateManager.getLogger(name);
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return logger.isDebugEnabled();
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return logger.isErrorEnabled();
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return logger.isFatalEnabled();
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return logger.isInfoEnabled();
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return logger.isTraceEnabled();
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return logger.isWarnEnabled();
+    }
+
+    @Override
+    public void trace(Object o) {
+        logger.logIfEnabled(FQCN, Level.TRACE, null, o, null);
+    }
+
+    @Override
+    public void trace(Object o, Throwable throwable) {
+        logger.logIfEnabled(FQCN, Level.TRACE, null, o, throwable);
+    }
+
+    @Override
+    public void debug(Object o) {
+        logger.logIfEnabled(FQCN, Level.DEBUG, null, o, null);
+    }
+
+    @Override
+    public void debug(Object o, Throwable throwable) {
+        logger.logIfEnabled(FQCN, Level.DEBUG, null, o, throwable);
+    }
+
+    @Override
+    public void info(Object o) {
+        logger.logIfEnabled(FQCN, Level.INFO, null, o, null);
+    }
+
+    @Override
+    public void info(Object o, Throwable throwable) {
+        logger.logIfEnabled(FQCN, Level.INFO, null, o, throwable);
+    }
+
+    @Override
+    public void warn(Object o) {
+        logger.logIfEnabled(FQCN, Level.WARN, null, o, null);
+    }
+
+    @Override
+    public void warn(Object o, Throwable throwable) {
+        logger.logIfEnabled(FQCN, Level.WARN, null, o, throwable);
+    }
+
+    @Override
+    public void error(Object o) {
+        logger.logIfEnabled(FQCN, Level.ERROR, null, o, null);
+    }
+
+    @Override
+    public void error(Object o, Throwable throwable) {
+        logger.logIfEnabled(FQCN, Level.ERROR, null, o, throwable);
+    }
+
+    @Override
+    public void fatal(Object o) {
+        logger.logIfEnabled(FQCN, Level.FATAL, null, o, null);
+    }
+
+    @Override
+    public void fatal(Object o, Throwable throwable) {
+        logger.logIfEnabled(FQCN, Level.FATAL, null, o, throwable);
+    }
+
+    /**
+     * Internal LogManager.
+     */
+    private static class PrivateManager extends LogManager {
+
+        public static LoggerContext getContext() {
+            ClassLoader cl = TomcatLogger.class.getClassLoader();
+            URI uri = null;
+            for (String fileName : FILE_NAMES) {
+                try {
+                    URL url = cl.getResource(fileName);
+                    if (url != null) {
+                        uri = url.toURI();
+                        break;
+                    }
+                } catch (URISyntaxException ex) {
+                    // Ignore the exception.
+                }
+            }
+            if (uri == null) {
+                return getContext(FQCN, cl, false);
+            } else {
+                return getContext(FQCN, cl, false, uri, "Tomcat");
+            }
+        }
+
+        public static ExtendedLogger getLogger(final String name) {
+            LoggerContext context = getContext();
+            return context.getLogger(name);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
----------------------------------------------------------------------
diff --git 
a/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
new file mode 100644
index 0000000..ff3e351
--- /dev/null
+++ 
b/log4j-appserver/src/main/java/org/apache/logging/log4j/appserver/tomcat/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+/**
+ * Log4j integration with Tomcat 8.5 or greater.
+ */
+package org.apache.logging.log4j.appserver.tomcat;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-appserver/src/main/resources/META-INF/services/org.apache.juli.logging.Log
----------------------------------------------------------------------
diff --git 
a/log4j-appserver/src/main/resources/META-INF/services/org.apache.juli.logging.Log
 
b/log4j-appserver/src/main/resources/META-INF/services/org.apache.juli.logging.Log
new file mode 100644
index 0000000..ee4963a
--- /dev/null
+++ 
b/log4j-appserver/src/main/resources/META-INF/services/org.apache.juli.logging.Log
@@ -0,0 +1 @@
+org.apache.logging.log4j.appserver.tomcat.TomcatLogger
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-appserver/src/site/markdown/index.md.vm
----------------------------------------------------------------------
diff --git a/log4j-appserver/src/site/markdown/index.md.vm 
b/log4j-appserver/src/site/markdown/index.md.vm
new file mode 100644
index 0000000..0643917
--- /dev/null
+++ b/log4j-appserver/src/site/markdown/index.md.vm
@@ -0,0 +1,46 @@
+<!-- vim: set syn=markdown : -->
+<!--
+    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.
+-->
+<!-- TODO: turn this into a velocity template for all the version numbers -->
+
+#set($h1 = '#')
+#set($h2 = '##')
+#set($h3 = '###')
+#set($h4 = '####')
+
+$h1 Application Server Integration
+
+The Application Server module provides support for integrating Log4j into 
various Java Application Servers.
+
+$h2 Tomcat
+
+Log4j may be used as the logging framework for Tomcat. This support is 
implemented automatically by including
+the log4j-api, log4j-core, and log4j-appserver jars in the boot classpath. A 
file named log4j2-tomcat.xml,
+log4j2-tomcat.json, log4j2-tomcat.yaml, log4j2-tomcat.yml, or 
log4j2-tomcat.properties must also be placed
+in the boot classpath. This is most easily done by:
+
+1. Creating a set of directories in catalina home named log4j2/lib and 
log4j2/conf.
+2. Placing log4j2-api-${Log4jReleaseVersion}.jar, 
log4j2-core-${Log4jReleaseVersion}.jar, and
+log4j2-appserver-${Log4jReleaseVersion}.jar in the log4j2/lib directory.
+3. Creating a file named log4j2-tomcat.xml, log4j2-tomcat.json, 
log4j2-tomcat.yaml, log4j2-tomcat.yml, or
+log4j2-tomcat.properties in the log4j2/conf directory.
+4. Create or modify setenv.sh in the tomcat bin directory to include
+```CLASSPATH=$CATALINA_HOME/log4j2/lib/*:$CATALINA_HOME/log4j2/conf```
+
+$h3 Requirements
+
+Requires Tomcat 8.5 or later.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-appserver/src/site/site.xml
----------------------------------------------------------------------
diff --git a/log4j-appserver/src/site/site.xml 
b/log4j-appserver/src/site/site.xml
new file mode 100644
index 0000000..7145712
--- /dev/null
+++ b/log4j-appserver/src/site/site.xml
@@ -0,0 +1,52 @@
+<!--
+ 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 name="Log4j App Server Integration"
+         xmlns="http://maven.apache.org/DECORATION/1.4.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 
http://maven.apache.org/xsd/decoration-1.4.0.xsd";>
+  <body>
+    <links>
+      <item name="Apache" href="http://www.apache.org/"; />
+      <item name="Logging Services" href="http://logging.apache.org/"/>
+      <item name="Log4j" href="../index.html"/>
+    </links>
+
+    <!-- Component-specific reports -->
+    <menu ref="reports"/>
+
+       <!-- Overall Project Info -->
+    <menu name="Log4j Project Information" img="icon-info-sign">
+      <item name="Dependencies" href="../dependencies.html" />
+      <item name="Dependency Convergence" 
href="../dependency-convergence.html" />
+      <item name="Dependency Management" href="../dependency-management.html" 
/>
+      <item name="Project Team" href="../team-list.html" />
+      <item name="Mailing Lists" href="../mail-lists.html" />
+      <item name="Issue Tracking" href="../issue-tracking.html" />
+      <item name="Project License" href="../license.html" />
+      <item name="Source Repository" href="../source-repository.html" />
+      <item name="Project Summary" href="../project-summary.html" />
+    </menu>
+
+    <menu name="Log4j Project Reports" img="icon-cog">
+      <item name="Changes Report" href="../changes-report.html" />
+      <item name="JIRA Report" href="../jira-report.html" />
+      <item name="Surefire Report" href="../surefire-report.html" />
+      <item name="RAT Report" href="../rat-report.html" />
+    </menu>
+  </body>
+</project>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/log4j-distribution/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-distribution/pom.xml b/log4j-distribution/pom.xml
index 74e0dd5..c3aa623 100644
--- a/log4j-distribution/pom.xml
+++ b/log4j-distribution/pom.xml
@@ -256,19 +256,36 @@
       <classifier>javadoc</classifier>
     </dependency>
     <dependency>
+    <groupId>org.apache.logging.log4j</groupId>
+    <artifactId>log4j-liquibase</artifactId>
+    <version>${project.version}</version>
+  </dependency>
+    <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-liquibase</artifactId>
       <version>${project.version}</version>
+      <classifier>sources</classifier>
     </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-liquibase</artifactId>
       <version>${project.version}</version>
+      <classifier>javadoc</classifier>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-appserver</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-appserver</artifactId>
+      <version>${project.version}</version>
       <classifier>sources</classifier>
     </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-liquibase</artifactId>
+      <artifactId>log4j-appserver</artifactId>
       <version>${project.version}</version>
       <classifier>javadoc</classifier>
     </dependency>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a8e3632..7435004 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1294,6 +1294,7 @@
     <module>log4j-iostreams</module>
     <module>log4j-jul</module>
     <module>log4j-liquibase</module>
+    <module>log4j-appserver</module>
   </modules>
   <profiles>
     <profile>

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 773663e..1a8a79a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -31,8 +31,11 @@
          - "remove" - Removed
     -->
     <release version="2.9.1" date="2017-MM-DD" description="GA Release 2.9.1">
+      <action issue="LOG4J2-2025" dev="rgoers" type="update">
+        Provide support for overriding the Tomcat Log class in Tomcat 8.5+.
+      </action>
       <action issue="LOG4J2-2030" dev="rgoers" type="fix">
-        Inspect all known ClassLoaders to locate the service provider"
+        Inspect all known ClassLoaders to locate the service provider.
       </action>
       <action issue="LOG4J2-2028" dev="rgoers" type="fix" due-to="Jason Tedor">
         Java 9 StackLocator was not properly skipping the initial stack frames.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3cb6238c/src/site/site.xml
----------------------------------------------------------------------
diff --git a/src/site/site.xml b/src/site/site.xml
index c684752..dca832a 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -270,6 +270,7 @@
       <item name="Log4j Tag Library" href="log4j-taglib/index.html"/>
       <item name="Log4j JMX GUI" href="log4j-jmx-gui/index.html"/>
       <item name="Log4j Web Application Support" href="log4j-web/index.html"/>
+      <item name="Log4j Application Server Integration" 
href="log4j-appserver/index.html"/>
       <item name="Log4j NoSQL support" href="log4j-nosql/index.html"/>
       <item name="Log4j IO Streams" href="log4j-iostreams/index.html"/>
       <item name="Log4j Liquibase Binding" href="log4j-liquibase/index.html"/>

Reply via email to