<?xml version="1.0"?>
<!--
 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/DOCUMENT/1.0.1"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/DOCUMENT/1.0.1 http://maven.apache.org/xsd/document-1.0.1.xsd"
          outputName="log4j-users-guide">

  <meta>
    <title>Apache Log4j 2</title>
    <author>The Apache Logging Project</author>
  </meta>

  <toc name="Table of Contents">
    <item name="Introduction" ref="/manual/index.html"/>
    <item name="Architecture" ref="/manual/architecture.html"/>
    <item name="Log4j 1.x Migration" ref="manual/migration.html"/>
    <item name="API" ref="/manual/api.html"/>
    <item name="Configuration" ref="/manual/configuration.html"/>
    <item name="Plugins" ref="/manual/plugins.html"/>
    <item name="Lookups" ref="/manual/lookups.html"/>
    <item name="Appenders" ref="/manual/appenders.html"/>
    <item name="Layouts" ref="/manual/layouts.html"/>
    <item name="Filters" ref="/manual/filters.html"/>
    <item name="Async Loggers" ref="/manual/async.html" />
    <item name="JMX" ref="/manual/jmx.html"/>
    <item name="Logging Separation" ref="/manual/logsep.html"/>
    <item name="Extending Log4j" ref="/manual/extending.html"/>
  </toc>

  <cover>
    <coverTitle>${project.name}</coverTitle>
    <coverSubTitle>v. ${project.version}</coverSubTitle>
    <coverType>User's Guide</coverType>
    <projectName>${project.name}</projectName>
    <projectLogo>http://logging.apache.org/log4j/2.x/images/logo.jpg</projectLogo>
    <companyName>The Apache Software Foundation</companyName>
    <companyLogo>http://www.apache.org/images/asf_logo_wide.png</companyLogo>
  </cover>
</document>