<?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.
-->
<document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">

  <properties>
    <title>Log4j Tools Runtime Dependencies</title>
  </properties>

  <body>
    <section name="Log4j Tools Runtime Dependencies">
      <p>
        Some Log4J features depend on external libraries. This page lists the required and optional
        dependencies.
      </p>
      <p>
        As of version 2.4, Log4J requires Java 7.
      </p>
      <p>
        Log4j version 2.3 and older require Java 6.
      </p>

      <a name="log4j-server" />
      <h4>log4j-server</h4>
      <table>
        <caption align="top">Optional Dependencies per Feature in Log4J Server components</caption>
        <tr>
          <th>Feature</th>
          <th>Requirements</th>
        </tr>
        <tr>
          <td>JMS receivers</td>
          <td>a JMS broker like <a href="http://activemq.apache.org/">Apache ActiveMQ</a></td>
        </tr>
      </table>

    </section>
  </body>
</document>
