<?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 name="Apache log4php"
	xmlns="http://maven.apache.org/DECORATION/1.1.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/DECORATION/1.1.0 http://maven.apache.org/xsd/decoration-1.1.0.xsd">

	<googleAnalyticsAccountId>UA-26177991-1</googleAnalyticsAccountId>

	<body>
		<links>
			<item name="About" href="/index.html" />
			<item name="Download" href="/download.html" />
			<item name="Install" href="/install.html" />
			<item name="Quick start" href="/quickstart.html" />
		</links>

		<menu name="Apache log4php™" img="icon-home">
			<item name="About" href="/index.html" />
			<item name="Download" href="/download.html" />
			<item name="Install" href="/install.html" />
			<item name="Changelog" href="/changelog.html" />
		</menu>

		<menu name="Documentation" img="icon-book">
			<item name="Quick start" href="/quickstart.html" />
			<item name="Introduction" href="/docs/introduction.html" />
			<item name="Configuration" href="/docs/configuration.html" />
			<item name="Loggers" href="/docs/loggers.html" />
			<item name="Appenders" href="/docs/appenders.html" collapse="true">
                <item name="LoggerAppenderAMQP" href="/docs/appenders/amqp.html" />
				<item name="LoggerAppenderConsole" href="/docs/appenders/console.html" />
				<item name="LoggerAppenderDailyFile" href="/docs/appenders/daily-file.html" />
				<item name="LoggerAppenderEcho" href="/docs/appenders/echo.html" />
				<item name="LoggerAppenderFile" href="/docs/appenders/file.html" />
				<item name="LoggerAppenderFirePHP" href="/docs/appenders/firephp.html" />
				<item name="LoggerAppenderGraylog2" href="/docs/appenders/graylog2.html" />
				<item name="LoggerAppenderMail" href="/docs/appenders/mail.html" />
				<item name="LoggerAppenderMongoDB" href="/docs/appenders/mongodb.html" />
				<item name="LoggerAppenderNull" href="/docs/appenders/null.html" />
				<item name="LoggerAppenderPDO" href="/docs/appenders/pdo.html" />
				<item name="LoggerAppenderPHP" href="/docs/appenders/php.html" />
				<item name="LoggerAppenderRollingFile" href="/docs/appenders/rolling-file.html" />
				<item name="LoggerAppenderSocket" href="/docs/appenders/socket.html" />
				<item name="LoggerAppenderSyslog" href="/docs/appenders/syslog.html" />
			</item>
			<item name="Layouts" href="/docs/layouts.html" collapse="true">
				<item name="LoggerLayoutGelf" href="/docs/layouts/gelf.html" />
				<item name="LoggerLayoutHtml" href="/docs/layouts/html.html" />
				<item name="LoggerLayoutPattern" href="/docs/layouts/pattern.html" />
				<item name="LoggerLayoutSerialized" href="/docs/layouts/serialized.html" />
				<item name="LoggerLayoutSimple" href="/docs/layouts/simple.html" />
				<item name="LoggerLayoutTTCC" href="/docs/layouts/ttcc.html" />
				<item name="LoggerLayoutXml" href="/docs/layouts/xml.html" />
			</item>
			<item name="Filters" href="/docs/filters.html" />
			<item name="Renderers" href="/docs/renderers.html" />
			<item name="API documentation" href="/apidocs/index.html" />
		</menu>

		<menu name="Community" img="icon-user">
			<item name="Volunteering" href="/volunteering.html" />
			<item name="Contributing Patches" href="/contributingpatches.html" />
			<item name="Wiki" href="http://wiki.apache.org/logging-log4php" />
			<item name="Blog" href="http://blogs.apache.org/logging/" />
		</menu>

		<menu name="Project Information" img="icon-info-sign">
			<item name="Continuous Integration" href="/integration.html" />
			<item name="Source Repository" href="/source-repository.html" />
			<item name="Dependencies" href="/dependencies.html" />
			<item name="Project License" href="/license.html" />
			<item name="Project Team" href="/team-list.html" />
			<item name="Issue Tracking" href="/issue-tracking.html" />
			<item name="Mailing Lists" href="/mail-lists.html" />
		</menu>

		<menu name="Project Reports" img="icon-cog">
			<item name="Changes Report" href="/changes-report.html" />
			<item name="Surefire Report" href="/surefire-report.html" />
			<item name="RAT Report" href="/rat-report.html" />
			<item name="Code Coverage" href="/coverage-report/index.html" />
		</menu>

		<menu name="Apache" img="icon-heart">
			<item name="Home" href="http://www.apache.org" />
			<item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html" />
			<item name="License" href="http://www.apache.org/licenses/" />
			<item name="Thanks" href="http://www.apache.org/foundation/thanks.html" />
			<item name="Conferences" href="http://www.apachecon.com" />
			<item name="Security" href="http://www.apache.org/security/" />
		</menu>
	</body>
</project>
