Merge branch 'master' into legacy-compilers
diff --git a/.gitattributes b/.gitattributes
index fcadb2c..2a49125 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,7 @@
 * text eol=lf
+*.png binary
+*.jpg binary
+
+# This is a windows-specific file
+src/main/resources/log4cxx.rc eol=crlf
+
diff --git a/.github/workflows/log4cxx.yml b/.github/workflows/log4cxx.yml
index d7b821e..ac725c0 100644
--- a/.github/workflows/log4cxx.yml
+++ b/.github/workflows/log4cxx.yml
@@ -45,11 +45,8 @@
 
     steps:
     - uses: actions/checkout@v2
-
-    - uses: lukka/set-shell-env@v1.1
       with:
-        CXX: ${{ matrix.cxx }}
-        CC: ${{ matrix.cc }}
+        path: main
 
     - name: 'Configure Dependencies - Ubuntu'
       if: matrix.name == 'ubuntu18-gcc' || matrix.name == 'ubuntu18-clang'
@@ -64,29 +61,49 @@
       if: matrix.name == 'windows-2019' || matrix.name == 'windows-2016'
       uses: actions/cache@v2
       with:
-        path: ${{ runner.workspace }}/vcpkg
+        path: vcpkg
         key: ${{ runner.os }}-${{ matrix.name }}-cache
 
-    - name: 'Configure Dependencies - Windows'
-      if: matrix.name == 'windows-2019' || matrix.name == 'windows-2016'
-      uses: lukka/run-vcpkg@v5
-      id: runvcpkg
+    - name: 'Checkout VCPKG - Windows'
+      if: (matrix.name == 'windows-2019' || matrix.name == 'windows-2016') && steps.restore-vcpkg-cache.outputs.cache-hit != 'true'
+      uses: actions/checkout@v2
       with:
-        vcpkgArguments: apr apr-util
-        vcpkgDirectory: ${{ runner.workspace }}/vcpkg/
-        vcpkgGitCommitId: ffa7fd27cfa29f206d1fd2ccfc722cad4aaeef3d
-        vcpkgTriplet: x64-windows
+        repository: microsoft/vcpkg
+        path: vcpkg
+        ref: ec6fe06e8da05a8157dc8581fa96b36b571c1bd5
 
-    - name: 'run cmake'
-      uses: lukka/run-cmake@v3
-      with:
-        cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
-        buildDirectory: ${{ runner.workspace }}/build
-        useVcpkgToolchainFile: true
-        cmakeAppendedArgs: '-DLOG4CXX_TEST_PROGRAM_PATH=C:\msys64\usr\bin'
+    - name: 'Configure Dependencies - Windows'
+      if: (matrix.name == 'windows-2019' || matrix.name == 'windows-2016') && steps.restore-vcpkg-cache.outputs.cache-hit != 'true'
+      id: runvcpkg
+      shell: pwsh
+      run: |
+        cd vcpkg
+        ./bootstrap-vcpkg.bat
+        ./vcpkg install apr apr-util --triplet=x64-windows
+
+    - name: 'run cmake - win'
+      if: (matrix.name == 'windows-2019' || matrix.name == 'windows-2016') 
+      shell: pwsh
+      run: |
+        $THISDIR=Get-Location
+        cd main
+        mkdir build
+        cd build
+        cmake -DLOG4CXX_TEST_PROGRAM_PATH=C:\msys64\usr\bin "-DCMAKE_TOOLCHAIN_FILE=$THISDIR/vcpkg/scripts/buildsystems/vcpkg.cmake" -DCMAKE_CXX_COMPILER=${{ matrix.cxx }} -DCMAKE_C_COMPILER=${{ matrix.cc }} ..
+        cmake --build .
+
+    - name: 'run cmake - *nix'
+      if: matrix.name != 'windows-2019'
+      run: |
+        cd main
+        mkdir build
+        cd build
+        cmake -DCMAKE_CXX_COMPILER=${{ matrix.cxx }} -DCMAKE_C_COMPILER=${{ matrix.cc }} ..
+        cmake --build .
 
     - name: run unit tests
       shell: pwsh
       run: |
-        cd ${{ runner.workspace }}/build
+        cd main
+        cd build
         ctest -C Debug --output-on-failure -V
diff --git a/.gitignore b/.gitignore
index dbaf83a..a845dd5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
 
 ar-lib
 config**
+!configuration-samples.md
 depcomp
 install-sh
 liblog4cxx.pc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 24d1d5d..df5909e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,6 +7,8 @@
 # (at least in the past it was project vesion: 0.a.b.c and the library so vesion a.b.c.0
 set(LIBLOG4CXX_LIB_VERSION ${log4cxx_VERSION_MINOR}.${log4cxx_VERSION_PATCH}.${log4cxx_VERSION_TWEAK})
 set(LIBLOG4CXX_LIB_SOVERSION ${log4cxx_VERSION_MINOR})
+# Set the 'release' version.  This is the human-readable version
+set(LOG4CXX_RELEASE_VERSION ${log4cxx_VERSION_MAJOR}.${log4cxx_VERSION_MINOR}.${log4cxx_VERSION_PATCH})
 
 # FindAPR and FindAPR-util are not provided by APR and APR-Util so source them locally
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/src/cmake")
@@ -49,6 +51,19 @@
   INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
 )
 
+if(LOG4CXX_QT_SUPPORT)
+    install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/main/include/log4cxx-qt
+      DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+      FILES_MATCHING PATTERN "*.h"
+    )
+    install(TARGETS log4cxx-qt EXPORT log4cxx-qtTargets
+      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+      INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+    )
+endif(LOG4CXX_QT_SUPPORT)
+
 IF(WIN32 AND BUILD_SHARED_LIBS AND LOG4CXX_INSTALL_PDB)
   INSTALL(FILES $<TARGET_PDB_FILE:log4cxx>
           DESTINATION ${CMAKE_INSTALL_BINDIR}
@@ -69,6 +84,20 @@
 
   install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblog4cxx.pc" 
     DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
+
+  if(LOG4CXX_QT_SUPPORT)
+      set(prefix "${CMAKE_INSTALL_PREFIX}")
+      set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
+      set(libdir "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
+      set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
+      set(VERSION "${log4cxx_VERSION_MAJOR}.${log4cxx_VERSION_MINOR}.${log4cxx_VERSION_PATCH}")
+      configure_file("${CMAKE_CURRENT_SOURCE_DIR}/liblog4cxx-qt.pc.in"
+	"${CMAKE_CURRENT_BINARY_DIR}/liblog4cxx-qt.pc"
+      )
+
+      install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblog4cxx-qt.pc"
+	DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
+  endif(LOG4CXX_QT_SUPPORT)
 endif(UNIX)
 
 # Support for find_package(log4cxx) in consuming CMake projects using
@@ -88,6 +117,22 @@
   DESTINATION   share/cmake/log4cxx
 )
 
+if(LOG4CXX_QT_SUPPORT)
+    install(EXPORT log4cxx-qtTargets
+      FILE        log4cxx-qtConfig.cmake
+      DESTINATION share/cmake/log4cxx
+    )
+    # Support for find_package(log4cxx 0.11) in consuming CMake projects
+    include(CMakePackageConfigHelpers)
+    write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/log4cxx-qtConfigVersion.cmake"
+      VERSION       ${PROJECT_VERSION}
+      COMPATIBILITY SameMinorVersion
+    )
+    install(FILES   "${CMAKE_CURRENT_BINARY_DIR}/log4cxx-qtConfigVersion.cmake"
+      DESTINATION   share/cmake/log4cxx
+    )
+endif(LOG4CXX_QT_SUPPORT)
+
 #
 # Get the varaibles from the subdirectories
 #
@@ -109,6 +154,25 @@
 endforeach()
 
 #
+# Package and sign if Apache maintainer
+#
+option(APACHE_MAINTAINER "Apache maintainer" OFF)
+if(APACHE_MAINTAINER)
+    set(CPACK_SOURCE_PACKAGE_FILE_NAME "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}")
+    set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
+    set(CPACK_SOURCE_IGNORE_FILES ".git/;build/;.vs/;out/")
+    include(CPack)
+
+    add_custom_target( dist
+	COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} -- package_source
+	COMMAND ${CMAKE_COMMAND} -E sha512sum "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz" > "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.sha512"
+	COMMAND ${CMAKE_COMMAND} -E sha512sum "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip" > "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.sha512"
+	COMMAND gpg -ab --yes "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz" > "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.asc"
+	COMMAND gpg -ab --yes "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip" > "apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.asc"
+	)
+endif()
+
+#
 # Output configuration information
 # Similar to APR CMake configuration
 #
@@ -119,6 +183,7 @@
 
 message(STATUS "  Build shared library ............ : ${BUILD_SHARED_LIBS}")
 message(STATUS "  Build tests ..................... : ${BUILD_TESTING}")
+message(STATUS "  Build site ...................... : ${BUILD_SITE}")
 message(STATUS "  Install prefix .................. : ${CMAKE_INSTALL_PREFIX}")
 message(STATUS "  C++ compiler .................... : ${CMAKE_CXX_COMPILER}")
 message(STATUS "  log4cxx char API ................ : ${LOG4CXX_CHAR}")
@@ -132,6 +197,7 @@
 message(STATUS "  Using libESMTP .................. : ${HAS_LIBESMTP}")
 message(STATUS "  ODBC library .................... : ${HAS_ODBC}")
 message(STATUS "  syslog .......................... : ${HAS_SYSLOG}")
+message(STATUS "  Qt support ...................... : ${LOG4CXX_QT_SUPPORT}")
 message(STATUS "  thread implementation ........... : ${THREAD_IMPL}")
 message(STATUS "  smart pointer implementation .... : ${SMART_PTR_IMPL}")
 message(STATUS "  mutex implementation ............ : ${MUTEX_IMPL}")
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 181d0f6..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,31 +0,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.
-#
-AUTOMAKE_OPTIONS = foreign
-ACLOCAL_AMFLAGS  = -I src/m4
-
-SUBDIRS = src
-EXTRA_DIST = \
-    aclocal.m4 \
-    autogen.sh \
-    build.xml \
-    INSTALL \
-    KEYS \
-    LICENSE \
-    NOTICE \
-    pom.xml
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = liblog4cxx.pc
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 2ca2925..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#! /bin/sh -e
-# 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.
-#
-# Regenerate the files autoconf / automake
-
-case `uname` in
-  (Darwin)  LIBTOOLIZE=glibtoolize  ;;
-  (*)       LIBTOOLIZE=libtoolize   ;;
-esac
-$LIBTOOLIZE --force --automake --copy
-
-rm -f config.cache
-rm -f config.log
-aclocal -I src/m4
-autoconf
-automake -a --copy
diff --git a/build.xml b/build.xml
deleted file mode 100644
index a49280e..0000000
--- a/build.xml
+++ /dev/null
@@ -1,459 +0,0 @@
-<?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.
-
--->
-<!DOCTYPE project [
-<!ENTITY license '
- 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.
-'>
-<!ENTITY common SYSTEM 'src/ant/common.xml'>
-]>
-
-<!--
-	This file releases log4cxx using Apache Ant (http://ant.apache.org)
--->
-<project name="log4cxx" default="usage">
-
-	&common;
-
-	<property	name="base.dir"
-				location="."
-	/>
-	<property	name="src.dir"
-				location="${base.dir}/src/main/cpp"
-	/>
-	<property	name="resources.dir"
-				location="${base.dir}/src/main/resources"
-	/>
-	<property	name="include.dir"
-				location="${base.dir}/src/main/include"
-	/>
-	<property	name="target.dir"
-				location="${base.dir}/target"
-	/>
-	<property	name="lib.dir"
-				location="${target.dir}/lib"
-	/>
-	<property	name="examples.dir"
-				location="${base.dir}/src/examples/cpp"
-	/>
-	<property	name="tests.dir"
-				location="${base.dir}/src/test"
-	/>
-	<property	name="tests.cpp.dir"
-				location="${tests.dir}/cpp"
-	/>
-	<property	name="tests.resources.dir"
-				location="${tests.dir}/resources"
-	/>
-	<property	name="tests.output.dir"
-				location="${tests.resources.dir}/output"
-	/>
-	<property	name="m2_repo"
-				location="${user.home}/.m2/repository"
-	/>
-	<property	name="log4j.version"
-				value="1.2.14"
-	/>
-	<available	property="log4j.jar"
-				value="/usr/share/java/log4j-1.2.jar"
-				file="/usr/share/java/log4j-1.2.jar"
-	/>
-	<property	name="log4j.jar"
-				location="${m2_repo}/log4j/log4j/${log4j.version}/log4j-${log4j.version}.jar"
-	/>
-	<property	name="doxygen.exe"
-				value="doxygen"
-	/>
-	<property	name="lib.name"
-				value="${project.groupId}"
-	/>
-	<property	name="lib.prefix"
-				value=""
-	/>
-
-	<propertyregex	property="version.major"
-					input="${project.version}"
-					regexp="^(\d+)"
-					select="\1"
-	/>
-	<propertyregex	property="version.minor"
-					input="${project.version}"
-					regexp="\.(\d+)\."
-					select="\1"
-	/>
-	<propertyregex	property="version.rev"
-					input="${project.version}"
-					regexp="(\d+)(?:-.+)?$"
-					select="\1"
-	/>
-	<propertyregex	property="version.hasSuffix"
-					input="${project.version}"
-					regexp="\d+-.+$"
-					select="\0"
-	/>
-
-	<property	name="site.svnRepoUrl"
-				value="https://svn.apache.org/repos/infra/websites/production/logging/content/log4cxx"
-	/>
-	<property	name="site.deployDir"
-				value="target/site-deploy"
-	/>
-	<property	name="site.deployDir.curVersion"
-				value="${site.deployDir}/${project.version}"
-	/>
-	<property	name="site.deployDir.curVersionWoSuffix"
-				value="${site.deployDir}/${version.major}.${version.minor}.${version.rev}"
-	/>
-
-	<target	name="usage"
-			description="Describes usage of the release script">
-		<echo>
-			Ant file for releasing log4cxx
-
-			Common invocations:
-
-			> ant -p
-
-			Displays available targets
-		</echo>
-	</target>
-
-	<target	name="init"
-			depends="common-init">
-
-		<condition	property="force-ant"
-					value="1">
-			<equals	arg1="${find}"
-					arg2="false"
-			/>
-		</condition>
-		<echo>force-ant: ${force-ant}</echo>
-	</target>
-
-	<target	name="make-header-check">
-		<echo	file="${header}.cpp"
-				append="false">
-			#include "${header}"
-			#include "${header}"
-		</echo>
-	</target>
-
-	<target	name="header-check"
-			description="Checks headers against Effective C++ guidelines">
-		<fail unless="is-gcc">Requires GCC compiler</fail>
-
-		<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
-		<delete dir="${target.dir}/header-check" />
-		<mkdir dir="${target.dir}/header-check" />
-		<copy	todir="${target.dir}/header-check"
-				overwrite="true">
-			<fileset	dir="${include.dir}"
-						includes="**/*.h">
-				<!-- obsolete header with #error directive to eliminate its use -->
-				<exclude name="**/tchar.h" />
-				<!--  excluded due to conflict between log4cxx/rfa.h and log4cxx/rolling/rfa.h  -->
-				<exclude name="log4cxx/rollingfileappender.h" />
-			</fileset>
-		</copy>
-		<foreach	target="make-header-check"
-					param="header">
-			<path>
-				<fileset	dir="${target.dir}/header-check"
-							includes="**/*.h"
-				/>
-			</path>
-		</foreach>
-		<cc	objdir="${target.dir}/header-check"
-			name="gcc"
-			exceptions="true"
-			subsystem="gui"
-			optimize="${optimize}"
-			multithreaded="true"
-			relentless="true"
-			debug="${debug}"
-			projectsOnly="${projectsOnly}">
-
-			<compilerarg	value="-Weffc++"
-			/>
-			<compilerarg	value="-Wall"
-			/>
-			<compilerarg	value="${pic-option}"
-							if="pic-option"
-			/>
-			<fileset	dir="${target.dir}/header-check"
-						includes="**/*.cpp"
-						excludes="log4cxx/private/*.cpp **/aprinitializer.h.cpp"
-			/>
-			<includepath path="${include.dir}" />
-			<project	outfile="${projects.dir}/projects/header-check"
-						type="${project.type}"
-						if="project.if"
-			/>
-		</cc>
-	</target>
-
-	<target	name="clean-output"
-			depends="init">
-		<delete>
-			<fileset	dir="${tests.dir}"
-						includes="output/*"
-			/>
-		</delete>
-	</target>
-
-	<target	name="apidocs"
-			description="Build log4cxx manual">
-		<copy	file="${base.dir}/src/site/doxy/Doxyfile.in"
-				tofile="${target.dir}/Doxyfile"
-				overwrite="true"
-		/>
-		<replace file="${target.dir}/Doxyfile">
-			<replacefilter	token="@version@"
-							value="${project.version}"
-			/>
-			<replacefilter	token="@base_dir@"
-							value="${base.dir}"
-			/>
-			<replacefilter	token="@manual_dest@"
-							value="${target.dir}/site/apidocs"
-			/>
-		</replace>
-
-		<!--
-			Copying project site index data to apidocs index
-
-			We need some Apache boilerplate and intro in the apidocs index page and the easiest
-			solution seems to be to simply copy some of the contents of the project site index.
-		 -->
-		<xslt	in="${target.dir}/site/index.html"
-				out="${target.dir}/mainpage.dox"
-				style="${base.dir}/src/site/doxy/mainpage.dox.xsl"
-				force="true">
-			<xmlcatalog>
-				<dtd	publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
-						location="${base.dir}/src/site/doxy/DTDs/xhtml1-transitional.dtd"
-				/>
-				<dtd	publicId="-//W3C//ENTITIES Latin 1 for XHTML//EN"
-						location="${base.dir}/src/site/doxy/DTDs/xhtml-lat1.ent"
-				/>
-				<dtd	publicId="-//W3C//ENTITIES Symbols for XHTML//EN"
-						location="${base.dir}/src/site/doxy/DTDs/xhtml-symbol.ent"
-				/>
-				<dtd	publicId="-//W3C//ENTITIES Special for XHTML//EN"
-						location="${base.dir}/src/site/doxy/DTDs/xhtml-special.ent"
-				/>
-			</xmlcatalog>
-		</xslt>
-
-		<mkdir	dir="${target.dir}/site/apidocs" />
-		<exec	executable="${doxygen.exe}"
-				dir="${target.dir}"
-		/>
-
-		<!--
-			Links to the main project site
-
-			We want links to the main project site and adding them after doxygen seems to be the
-			only and easiest way.
-		 -->
-		<replaceregexp	match="(&lt;div (?:id=&quot;projectname&quot;|class=&quot;title&quot;)&gt;)(Apache log4cxx)"
-						replace="\1&lt;a href=&quot;http://logging.apache.org/log4cxx&quot;&gt;\2&lt;/a&gt;"
-						flags="img">
-			<fileset dir="${target.dir}/site/apidocs">
-				<include name="*.html" />
-			</fileset>
-		</replaceregexp>
-	</target>
-
-	<target	name="site-text-file-cleanup">
-		<fixcrlf	srcDir="${base.dir}/${subDir}"
-					tab="asis"
-					tablength="4"
-					fixlast="false"
-					eof="asis"
-					eol="unix"
-					includes="**/*.css **/*.html"
-		/>
-
-		<replaceregexp	flags="mg"
-						match="(?: |\t)+$"
-						replace="">
-			<fileset	dir="${base.dir}/${subDir}"
-						includes="**/*.css, **/*.html"
-			/>
-		</replaceregexp>
-	</target>
-
-	<target	name="site"
-			depends="apidocs">
-		<antcall target="site-text-file-cleanup">
-			<param	name="subDir"
-					value="target/site"
-			/>
-		</antcall>
-	</target>
-
-	<target	name="prepare-changes"
-			description="Prepares changes.xml from a JIRA issues list">
-		<xslt	style="src/changes/changes.xslt"
-				in="issues.xml"
-				out="src/changes/changes.xml"
-		/>
-	</target>
-
-	<target	name="checkout-site">
-		<exec	executable="svn"
-				failonerror="true">
-			<arg value="co"					/>
-			<arg value="${site.svnRepoUrl}"	/>
-			<arg value="${site.deployDir}"	/>
-		</exec>
-	</target>
-
-	<target	name="update-site">
-		<exec	executable="svn"
-				dir="${site.deployDir}"
-				failonerror="true">
-			<arg value="update" />
-		</exec>
-	</target>
-
-	<target	name="post-site"
-			depends="checkout-site, update-site"
-	/>
-
-	<target	name="svn-mime=css">
-		<exec executable="svn">
-			<arg value="propset"		/>
-			<arg value="svn:mime-type"	/>
-			<arg value="text/css"		/>
-			<arg value="${src.css}"		/>
-		</exec>
-	</target>
-
-	<target	name="svn-mime=html">
-		<exec executable="svn">
-			<arg value="propset"		/>
-			<arg value="svn:mime-type"	/>
-			<arg value="text/html"		/>
-			<arg value="${src.html}"	/>
-		</exec>
-	</target>
-
-	<!--
-		Was unable to get a version w/o any suffix in pom.xml/distributionManagement, guess it's a
-		limitation of the property interpolation used. All suggestions found in the net seem to only
-		work outside that section, e.g. I was able to make a shorter version available in some
-		phases calling ANT targets. Doesn't get me anything... So I'm dealing with the long vs.
-		short name here by simply renaming the folder with the long name created by maven.
-
-		This only works for SVN clients using only one ".svn" folder per working copy!
-
-		https://cwiki.apache.org/confluence/display/MAVENOLD/POM+Interpolation+Refactor
-		https://stackoverflow.com/a/12002359/2055163
-		https://gist.github.com/tux2323/970877#file-pom-xml-L24
-	 -->
-	<target	name="svn-shorten-dir-name"
-			if="version.hasSuffix">
-		<delete	dir="${site.deployDir.curVersionWoSuffix}"
-		/>
-		<move	file="${site.deployDir.curVersion}"
-				tofile="${site.deployDir.curVersionWoSuffix}"
-		/>
-	</target>
-
-	<target	name="site-deploy">
-		<antcall	target="svn-shorten-dir-name"				/>
-		<delete		file="${site.deployDir}/svn-commit.tmp~"	/>
-
-		<exec	executable="svn"
-				failonerror="true">
-			<arg value="add"									/>
-			<arg value="--force"								/>
-			<arg value="--depth=infinity"						/>
-			<arg value="${site.deployDir.curVersionWoSuffix}"	/>
-		</exec>
-
-		<taskdef	name="foreach"
-					classname="net.sf.antcontrib.logic.ForEach"
-		/>
-		<foreach	target="svn-mime=css"
-					param="src.css">
-			<path>
-				<fileset	dir="${site.deployDir.curVersionWoSuffix}"
-							includes="**/*.css"
-				/>
-			</path>
-		</foreach>
-		<foreach	target="svn-mime=html"
-					param="src.html">
-			<path>
-				<fileset	dir="${site.deployDir.curVersionWoSuffix}"
-							includes="**/*.html"
-				/>
-			</path>
-		</foreach>
-
-		<antcall target="site-text-file-cleanup">
-			<param	name="subDir"
-					value="${site.deployDir.curVersionWoSuffix}"
-			/>
-		</antcall>
-
-		<!--
-			Is allowed to fail in case of no files to delete:
-
-			[exec] svn: E205001: Try 'svn help delete' for more information
-			[exec] svn: E205001: Not enough arguments provided
-		 -->
-		<exec	executable="sh"
-				failonerror="false">
-			<arg value="-c" />
-			<arg value="svn st &quot;${site.deployDir.curVersionWoSuffix}&quot; | grep ! | cut -d! -f2 | sed 's/^ *//' | sed 's/^/\&quot;/g' | sed 's/$/\&quot;/g' | xargs svn rm" />
-		</exec>
-
-		<!-- Requires that SVN_EDITOR, VISUAL or EDITOR being set to edit commit description. -->
-		<exec	executable="sh"
-				failonerror="true">
-			<arg value="-c" />
-			<arg value="svn ci &quot;${site.deployDir.curVersionWoSuffix}&quot; &lt; /dev/tty &gt; /dev/tty 2&gt; /dev/tty" />
-		</exec>
-	</target>
-
-	<target	name="autogen"
-			depends="init"
-			if="is-unix">
-		<exec executable="sh">
-			<arg value="autogen.sh" />
-		</exec>
-	</target>
-</project>
-
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index f6b3f44..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,502 +0,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.
-
-AC_INIT([log4cxx], [0.11.0])
-AC_CONFIG_MACRO_DIR([src/m4])
-AC_CONFIG_SRCDIR(src/main/cpp/logger.cpp)
-
-# autoconf 2.50 or higher to rebuild aclocal.m4, because the
-# AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro.
-AC_PREREQ(2.50)
-
-AC_CANONICAL_HOST
-AC_CANONICAL_TARGET
-
-#
-# +1 : ? : +1  == new interface that does not break old one
-# +1 : ? : 0   == new interface that breaks old one
-#  ? : ? : 0   == no new interfaces, but breaks apps
-#  ? :+1 : ?   == just some internal changes, nothing breaks but might work
-#                 better
-# CURRENT : REVISION : AGE
-LT_VERSION=11:0:0
-
-AC_SUBST(LT_VERSION)
-
-AH_VERBATIM([HAVE_NO_EXPLICIT_EXPORTS],
-[/* no explicit exports */
-#define LOG4CXX_EXPORT])
-
-AM_INIT_AUTOMAKE([foreign subdir-objects -Wall])
-
-# Checks for programs
-# ----------------------------------------------------------------------------
-
-AM_PROG_AR
-AM_PROG_LIBTOOL
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-
-AC_PROG_CXX([g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC QCC])
-
-AC_PROG_CXXCPP
-AC_LANG(C++)
-
-# CXX fine tuning
-case "$host" in
-    *-dec-osf*)
-        CXXFLAGS="$CXXFLAGS -std strict_ansi_errors"
-        ;;
-    *)
-        ;;
-esac
-
-# Doxygen
-
-AC_ARG_ENABLE(doxygen,
-        AC_HELP_STRING(--enable-doxygen,
-                [enable documentation generation with doxygen (auto)]))
-
-AC_ARG_ENABLE(dot,
-        AC_HELP_STRING(--enable-dot,
-                [use 'dot' to generate graphs in doxygen (auto)]))
-
-AC_ARG_ENABLE(html-docs,
-        AC_HELP_STRING(--enable-html-docs,
-                [enable HTML generation with doxygen (yes)]),
-        [],
-        [enable_html_docs=yes])
-
-AC_ARG_ENABLE(latex-docs,
-        AC_HELP_STRING(--enable-latex-docs,
-                [enable LaTeX documentation generation with doxygen (no)]),
-        [],
-        [enable_latex_docs=no])
-
-if test "x$enable_doxygen" = xno; then
-        enable_doc=no
-else
-        AC_PATH_PROG(DOXYGEN, doxygen, , $PATH)
-        if test "x$DOXYGEN" = x; then
-                        if test "x$enable_doxygen" = xyes; then
-                                        AC_MSG_ERROR([could not find doxygen])
-                        fi
-                        enable_doc=no
-        else
-                        enable_doc=yes
-                        AC_PATH_PROG(DOT, dot, , $PATH)
-        fi
-fi
-AM_CONDITIONAL(DOC, test x$enable_doc = xyes)
-AM_CONDITIONAL(LATEX_DOC, test x$enable_latex_docs = xyes)
-
-if test x$DOT = x; then
-        if test "x$enable_dot" = xyes; then
-                AC_MSG_ERROR([could not find dot])
-        fi
-        enable_dot=no
-else
-        enable_dot=yes
-fi
-
-manual_dest="manual"
-base_dir=`(cd $srcdir && pwd)`
-
-AC_SUBST(enable_dot)
-AC_SUBST(enable_html_docs)
-AC_SUBST(enable_latex_docs)
-AC_SUBST(manual_dest)
-AC_SUBST(base_dir)
-
-
-
-
-# Checks header files
-# ----------------------------------------------------------------------------
-APR_FIND_APR( , , 1, 1)
-if test "$apr_found" = "no"; then
-  AC_MSG_ERROR(APR could not be located. Please use the --with-apr option.)
-fi
-
-CPPFLAGS="$CPPFLAGS `$apr_config --cppflags` `$apr_config --includes`"
-APR_LIBS="`$apr_config --link-ld --libs`"
-AC_SUBST(APR_LIBS)
-LDFLAGS="$LDFLAGS $APR_LIBS"
-
-APR_FIND_APU( , , 1, 1)
-if test "$apu_found" = "no"; then
- AC_MSG_ERROR(APR-util could not be located. Please use the --with-apr-util option.)
-fi
-
-CPPFLAGS="$CPPFLAGS `$apu_config --includes`"
-APU_LIBS="`$apu_config --link-ld --libs`"
-AC_SUBST(APU_LIBS)
-LDFLAGS="$LDFLAGS $APU_LIBS"
-
-# Checks local idioms
-# ----------------------------------------------------------------------------
-
-# for local syslog() function for SyslogAppender
-AC_CHECK_FUNCS(mbsrtowcs, [have_mbsrtowcs=yes], [have_mbsrtowcs=no])
-if test "$have_mbsrtowcs" = "yes"
-then
- AC_SUBST(HAS_MBSRTOWCS, 1)
-else
- AC_SUBST(HAS_MBSRTOWCS, 0)
-fi
-
-AC_CHECK_FUNCS(wcstombs, [have_wcstombs=yes], [have_wcstombs=no])
-if test "$have_wcstombs" = "yes"
-then
- AC_SUBST(HAS_WCSTOMBS, 1)
-else
- AC_SUBST(HAS_WCSTOMBS, 0)
-fi
-
-# for local syslog() function for SyslogAppender
-AC_CHECK_FUNCS(syslog, [have_syslog=yes], [have_syslog=no])
-if test "$have_syslog" = "yes"
-then
- AC_SUBST(HAS_SYSLOG, 1)
-else
- AC_SUBST(HAS_SYSLOG, 0)
-fi
-
-AC_CHECK_HEADER([locale],have_locale=yes,have_locale=no)
-if test "$have_locale" = "yes"
-then
- AC_SUBST(HAS_STD_LOCALE, 1)
-else
- AC_SUBST(HAS_STD_LOCALE, 0)
-fi
-
-AC_MSG_CHECKING([for wchar_t])
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([
-                   #include <string>
-                   std::wstring w;])], [have_wchar_t=yes], [have_wchar_t=no])
-AC_MSG_RESULT($have_wchar_t)
-if test "$have_wchar_t" = "yes"
-then
- AC_SUBST(HAS_WCHAR_T, 1)
-else
- AC_SUBST(HAS_WCHAR_T, 0)
-fi
-
-AC_CHECK_FUNCS(fwide, [have_fwide=yes], [have_fwide=no])
-if test "$have_fwide" = "yes"
-then
- AC_SUBST(HAS_FWIDE, 1)
-else
- AC_SUBST(HAS_FWIDE, 0)
-fi
-
-
-# Checks for libraries
-# ----------------------------------------------------------------------------
-
-#for ODBCAppender
-AC_MSG_CHECKING(for ODBC support)
-AC_ARG_WITH(ODBC,
-        AC_HELP_STRING(--with-ODBC, [ODBC support. Accepted arguments :
-                unixODBC, iODBC, Microsoft, no (default=no)]),
-        [ac_with_odbc=$withval],
-        [ac_with_odbc=no])
-case "$ac_with_odbc" in
-    Microsoft)
-        AC_SUBST(HAS_ODBC, 1, ODBC support)
-        AC_MSG_RESULT(Microsoft)
-        LIBS_ODBC="-lodbc32"
-        ;;
-    unixODBC)
-        AC_MSG_RESULT(unixODBC)
-        AC_CHECK_HEADER(sqlext.h,, AC_MSG_ERROR(unixODBC not found !))
-        AC_SUBST(HAS_ODBC, 1, ODBC support)
-        LIBS_ODBC="-lodbc"
-        ;;
-    iODBC)
-        AC_MSG_RESULT(iODBC)
-        AC_CHECK_PROG(IODBC_CONFIG, iodbc-config, yes, no)
-        if test "x$IODBC_CONFIG" = "xyes"
-        then
-                AC_SUBST(HAS_ODBC, 1, ODBC support)
-                LIBS_ODBC="`iodbc-config --libs`"
-                CPPFLAGS_ODBC="`iodbc-config --cflags`"
-        else
-                AC_MSG_ERROR(iODBC not found !)
-        fi
-        ;;
-        no)
-        AC_SUBST(HAS_ODBC, 0, No ODBC support)
-        AC_MSG_RESULT(no)
-        ;;
-    *)
-        AC_MSG_RESULT(???)
-        AC_MSG_ERROR(Unknown option : $ac_with_odbc)
-        ;;
-esac
-AC_SUBST(LIBS_ODBC)
-AC_SUBST(CPPFLAGS_ODBC)
-
-
-#for SMTPAppender
-AC_MSG_CHECKING(for SMTP support)
-AC_ARG_WITH(SMTP,
-        AC_HELP_STRING(--with-SMTP, [SMTP support. Accepted arguments :
-                libesmtp, no (default=no)]),
-        [ac_with_smtp=$withval],
-        [ac_with_smtp=no])
-case "$ac_with_smtp" in
-    libesmtp)
-        AC_MSG_RESULT(libesmtp)
-        AC_CHECK_LIB([esmtp], [smtp_create_session],,
-                AC_MSG_ERROR(libesmtp library not found !),
-                -lesmtp)
-        AC_SUBST(HAS_LIBESMTP, 1, SMTP support through libesmtp library.)
-        LIBS="-lesmtp $LIBS"
-        ;;
-        no)
-        AC_MSG_RESULT(no)
-        AC_SUBST(HAS_LIBESMTP, 0, SMTP support through libesmtp library.)
-        ;;
-    *)
-        AC_MSG_RESULT(???)
-        AC_MSG_ERROR(Unknown option : $ac_with_smtp)
-        ;;
-esac
-
-#for char api
-AC_ARG_ENABLE(char,
-        AC_HELP_STRING(--enable-char,
-	        [enable char API (yes)]))
-if test "x$enable_char" = xno; then
-        have_char_api=no
-else
-        have_char_api=yes
-fi
-
-if test "$have_char_api" = "yes"
-then
-    AC_SUBST(CHAR_API, 1)
-else
-    AC_SUBST(CHAR_API, 0)
-fi
-
-#for wchar_t api
-AC_ARG_ENABLE(wchar_t,
-        AC_HELP_STRING(--enable-wchar_t,
-	        [enable wchar_t API (yes if wchar_t available)]))
-if test "x$enable_wchar_t" = xno; then
-        have_wchar_t_api=no
-else
-    if test "$have_wchar_t" = "yes"
-    then
-        have_wchar_t_api=yes
-    else
-        have_wchar_t_api=no
-    fi
-fi
-
-if test "$have_wchar_t_api" = "yes"
-then
-    AC_SUBST(WCHAR_T_API, 1)
-else
-    AC_SUBST(WCHAR_T_API, 0)
-fi
-
-#for unichar api
-AC_ARG_ENABLE(unichar,
-        AC_HELP_STRING(--enable-unichar,
-	        [enable unichar API (no)]))
-if test "x$enable_unichar" = "yes"
-then
-    AC_SUBST(UNICHAR_API, 1)
-else
-    AC_SUBST(UNICHAR_API, 0)
-fi
-
-#for cfstring api
-AC_ARG_ENABLE(cfstring,
-        AC_HELP_STRING(--enable-cfstring,
-	        [enable cfstring API (no)]))
-if test "x$enable_cfstring" = xyes; then
-        AC_MSG_CHECKING([for cfstring])
-        CPPFLAGS="$CPPFLAGS -framework CoreFoundation"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([
-                   #include <CoreFoundation/CFString.h>
-                   CFStringRef x = CFSTR("Hello");])], [have_cfstring_api=yes], [have_cfstring_api=no])
-        AC_MSG_RESULT($have_cfstring_api)
-else
-        have_cfstring_api=no
-fi
-
-if test "$have_cfstring_api" = "yes"
-then
-    AC_SUBST(CFSTRING_API, 1)
-else
-    AC_SUBST(CFSTRING_API, 0)
-fi
-
-#determine charset type
-AC_MSG_CHECKING([charset type])
-AC_ARG_WITH(charset,
-        AC_HELP_STRING(--with-charset=TYPE, [locale charset.
-                Accepted TYPE variants: auto, utf-8, iso-8859-1, usascii, ebcdic (default=auto)]),
-        [ac_with_charset=$withval],
-        [ac_with_charset=auto])
-
-case "$ac_with_charset" in
-    utf-8)
-        AC_MSG_RESULT(utf-8)
-        AC_SUBST(CHARSET_UTF8, 1)
-        AC_SUBST(CHARSET_ISO88591, 0)
-        AC_SUBST(CHARSET_USASCII, 0)
-        AC_SUBST(CHARSET_EBCDIC, 0)
-        ;;
-
-    iso-8859-1)
-        AC_MSG_RESULT(iso-8859-1)
-        AC_SUBST(CHARSET_UTF8, 0)
-        AC_SUBST(CHARSET_ISO88591, 1)
-        AC_SUBST(CHARSET_USASCII, 0)
-        AC_SUBST(CHARSET_EBCDIC, 0)
-        ;;
-
-    usascii)
-        AC_MSG_RESULT(usascii)
-        AC_SUBST(CHARSET_UTF8, 0)
-        AC_SUBST(CHARSET_ISO88591, 0)
-        AC_SUBST(CHARSET_USASCII, 1)
-        AC_SUBST(CHARSET_EBCDIC, 0)
-        ;;
-
-    ebcdic)
-        AC_MSG_RESULT(usascii)
-        AC_SUBST(CHARSET_UTF8, 0)
-        AC_SUBST(CHARSET_ISO88591, 0)
-        AC_SUBST(CHARSET_USASCII, 0)
-        AC_SUBST(CHARSET_EBCDIC, 1)
-        ;;
-
-    auto)
-        AC_MSG_RESULT(auto)
-        AC_SUBST(CHARSET_UTF8, 0)
-        AC_SUBST(CHARSET_ISO88591, 0)
-        AC_SUBST(CHARSET_USASCII, 0)
-        AC_SUBST(CHARSET_EBCDIC, 0)
-        ;;
-
-    *)
-        AC_MSG_RESULT(???)
-        AC_MSG_ERROR(Invalid charset type: $ac_with_charset)
-        ;;
-esac
-
-
-
-#determine logchar type
-AC_MSG_CHECKING([logchar type])
-AC_ARG_WITH(logchar,
-        AC_HELP_STRING(--with-logchar=TYPE, [type for logchar.
-                Accepted TYPE variants: utf-8, wchar_t, unichar (default=utf-8)]),
-        [ac_with_logchar=$withval],
-        [ac_with_logchar=utf-8])
-
-case "$ac_with_logchar" in
-    utf-8)
-        AC_MSG_RESULT(utf-8)
-        AC_SUBST(LOGCHAR_IS_UTF8, 1)
-        AC_SUBST(LOGCHAR_IS_WCHAR, 0)
-        AC_SUBST(LOGCHAR_IS_UNICHAR, 0)
-        ;;
-
-    wchar_t)
-        AC_MSG_RESULT(wchar_t)
-        AC_SUBST(LOGCHAR_IS_UTF8, 0)
-        AC_SUBST(LOGCHAR_IS_WCHAR, 1)
-        AC_SUBST(LOGCHAR_IS_UNICHAR, 0)
-        ;;
-
-    unichar)
-        AC_MSG_RESULT(unichar)
-        AC_SUBST(LOGCHAR_IS_UTF8, 0)
-        AC_SUBST(LOGCHAR_IS_WCHAR, 0)
-        AC_SUBST(LOGCHAR_IS_UNICHAR, 1)
-        ;;
-
-    *)
-        AC_MSG_RESULT(???)
-        AC_MSG_ERROR(Invalid logchar type: $ac_with_logchar)
-        ;;
-esac
-
-
-AC_ARG_ENABLE(non-blocking,
-            AC_HELP_STRING(--enable-non-blocking,
-           [non-blocking mode (no)]))
-if test "x$enable_non_blocking" = xyes; then
-        CXXFLAGS="$CXXFLAGS -std=c++11"
-        AC_DEFINE(NON_BLOCKING)
-        AC_DEFINE(RW_MUTEX)
-        AC_DEFINE(STATIC_STRINGSTREAM)
-fi
-
-AM_CONDITIONAL([NON_BLOCKING], [test "x$enable_non_blocking" = xyes])
-
-# Create files
-# ----------------------------------------------------------------------------
-
-AC_CONFIG_FILES([
-Makefile
-liblog4cxx.pc
-src/Makefile
-src/main/Makefile
-src/main/cpp/Makefile
-src/main/include/Makefile
-src/main/include/log4cxx/log4cxx.h
-src/main/include/log4cxx/private/log4cxx_private.h
-src/main/include/log4cxx/private/Makefile
-src/main/include/log4cxx/Makefile
-src/main/include/log4cxx/helpers/Makefile
-src/main/include/log4cxx/net/Makefile
-src/main/include/log4cxx/nt/Makefile
-src/main/include/log4cxx/spi/Makefile
-src/main/include/log4cxx/spi/location/Makefile
-src/main/include/log4cxx/varia/Makefile
-src/main/include/log4cxx/xml/Makefile
-src/main/include/log4cxx/config/Makefile
-src/main/include/log4cxx/db/Makefile
-src/main/include/log4cxx/rolling/Makefile
-src/main/include/log4cxx/pattern/Makefile
-src/main/include/log4cxx/filter/Makefile
-src/m4/Makefile
-src/site/Makefile
-src/site/doxy/Makefile
-src/site/doxy/Doxyfile
-src/test/Makefile
-src/test/resources/Makefile
-src/test/resources/input/Makefile
-src/test/resources/input/ndc/Makefile
-src/test/resources/input/rolling/Makefile
-src/test/resources/input/xml/Makefile
-src/test/cpp/Makefile
-src/test/resources/witness/Makefile
-src/test/resources/witness/encoding/Makefile
-src/test/resources/witness/ndc/Makefile
-src/test/resources/witness/rolling/Makefile
-src/examples/Makefile
-src/examples/cpp/Makefile
-])
-AC_OUTPUT
diff --git a/configure.bat b/configure.bat
deleted file mode 100644
index b1101c0..0000000
--- a/configure.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-ECHO OFF
-REM  Licensed to the Apache Software Foundation (ASF) under one or more
-REM  contributor license agreements.  See the NOTICE file distributed with
-REM  this work for additional information regarding copyright ownership.
-REM  The ASF licenses this file to You under the Apache License, Version 2.0
-REM  (the "License"); you may not use this file except in compliance with
-REM  the License.  You may obtain a copy of the License at
-REM
-REM       http://www.apache.org/licenses/LICENSE-2.0
-REM
-REM  Unless required by applicable law or agreed to in writing, software
-REM  distributed under the License is distributed on an "AS IS" BASIS,
-REM  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-REM  See the License for the specific language governing permissions and
-REM  limitations under the License.
-REM
-
-copy /Y src\main\include\log4cxx\log4cxx.hw src\main\include\log4cxx\log4cxx.h
-copy /Y src\main\include\log4cxx\private\log4cxx_private.hw src\main\include\log4cxx\private\log4cxx_private.h
diff --git a/src/test/Makefile.am b/liblog4cxx-qt.pc.in
similarity index 75%
rename from src/test/Makefile.am
rename to liblog4cxx-qt.pc.in
index 528d1b8..b7547b4 100644
--- a/src/test/Makefile.am
+++ b/liblog4cxx-qt.pc.in
@@ -12,5 +12,15 @@
 # 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.
-#
-SUBDIRS = cpp resources
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: log4cxx
+Description: log4cxx C++ logging framework(Qt support)
+Version: @VERSION@
+Libs: -L${libdir} -llog4cxx-qt
+Cflags: -I${includedir}
+Requires: liblog4cxx
+
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index ba23870..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,484 +0,0 @@
-<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/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>log4cxx</groupId>
-	<artifactId>apache-log4cxx</artifactId>
-	<packaging>pom</packaging>
-	<version>0.11.0-SNAPSHOT</version>
-	<name>Apache log4cxx</name>
-	<description>Logging framework for C++.</description>
-	<url>http://logging.apache.org/log4cxx</url>
-	<inceptionYear>2003</inceptionYear>
-
-	<issueManagement>
-		<system>JIRA</system>
-		<url>https://issues.apache.org/jira/browse/LOGCXX</url>
-	</issueManagement>
-
-	<mailingLists>
-		<mailingList>
-			<name>log4cxx usage</name>
-			<subscribe>log4cxx-user-subscribe@logging.apache.org</subscribe>
-			<unsubscribe>log4cxx-user-unsubscribe@logging.apache.org</unsubscribe>
-			<post>log4cxx-user@logging.apache.org</post>
-			<archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-user/</archive>
-			<otherArchives>
-				<otherArchive>http://markmail.org/search/list:org.apache.logging.log4cxx-user</otherArchive>
-				<otherArchive>http://marc.info/?l=log4cxx-user</otherArchive>
-				<otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.user</otherArchive>
-			</otherArchives>
-		</mailingList>
-		<mailingList>
-			<name>log4cxx development</name>
-			<subscribe>dev-subscribe@logging.apache.org</subscribe>
-			<unsubscribe>dev-unsubscribe@logging.apache.org</unsubscribe>
-			<post>dev@logging.apache.org</post>
-			<archive>http://mail-archives.apache.org/mod_mbox/logging-dev/</archive>
-			<otherArchives>
-				<otherArchive>http://markmail.org/search/list:org.apache.logging.dev</otherArchive>
-				<otherArchive>http://marc.info/?l=dev</otherArchive>
-				<otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.devel</otherArchive>
-			</otherArchives>
-		</mailingList>
-		<mailingList>
-			<name>Old log4cxx development (NOT USED ANYMORE!)</name>
-			<subscribe>log4cxx-dev-subscribe@logging.apache.org</subscribe>
-			<unsubscribe>log4cxx-dev-unsubscribe@logging.apache.org</unsubscribe>
-			<post>log4cxx-dev@logging.apache.org</post>
-			<archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/</archive>
-			<otherArchives>
-				<otherArchive>http://markmail.org/search/list:org.apache.logging.log4cxx-dev</otherArchive>
-				<otherArchive>http://marc.info/?l=log4cxx-dev</otherArchive>
-				<otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.devel</otherArchive>
-			</otherArchives>
-		</mailingList>
-	</mailingLists>
-
-	<licenses>
-		<license>
-			<name>Apache License, Version 2.0</name>
-			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-			<distribution>repo</distribution>
-		</license>
-	</licenses>
-
-	<scm>
-		<connection>scm:git:http://gitbox.apache.org/repos/asf/logging-log4cxx.git</connection>
-		<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/logging-log4cxx.git</developerConnection>
-		<url>https://gitbox.apache.org/repos/asf?p=logging-log4cxx.git</url>
-		<tag>HEAD</tag>
-	</scm>
-
-	<properties>
-		<!-- Note that any properties you want available in velocity templates must not use periods! -->
-		<releaseArtifactId>${project.artifactId}</releaseArtifactId>
-		<releaseVersion>${project.version}</releaseVersion>
-		<releaseManager>Matt Sicker</releaseManager>
-		<releaseKey>B62BABE8</releaseKey>
-		<windowsArchitecture>x64</windowsArchitecture>
-	</properties>
-
-	<organization>
-		<name>Apache Software Foundation</name>
-		<url>http://www.apache.org</url>
-	</organization>
-
-	<!-- Developers listed by PMC, Committers, alphabetical by id-->
-	<developers>
-		<!--Begin PMC-->
-		<!--End PMC, Begin Committers-->
-		<developer>
-			<id>alexz</id>
-			<name>Alex Zbarcea</name>
-			<email>alexz@apache.org</email>
-			<timezone>America/New York</timezone>
-			<roles>
-				<role>Committer</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>chand</id>
-			<name>Chand Priyankara</name>
-			<email>chand@apache.org</email>
-			<timezone>Sri Lanka/Kadawathe</timezone>
-			<roles>
-				<role>Committer</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>fseydoux</id>
-			<name>Florian Seydoux</name>
-			<email>fseydoux@apache.org</email>
-			<timezone>Europe/Zurich</timezone>
-			<roles>
-				<role>Committer</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>joseph</id>
-			<name>Joseph Southwell</name>
-			<email>joseph@apache.org</email>
-			<timezone>America/Chicago</timezone>
-			<roles>
-				<role>Committer</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>rhys</id>
-			<name>Rhys Ulerich</name>
-			<email>rhys@apache.org</email>
-			<timezone>America/Chicago</timezone>
-			<roles>
-				<role>Committer</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>tschoening</id>
-			<name>Thorsten Schöning</name>
-			<email>tschoening@apache.org</email>
-			<timezone>Europe/Berlin</timezone>
-			<roles>
-				<role>Committer</role>
-			</roles>
-		</developer>
-		<!--End Committers, Begin Emeritus-->
-		<developer>
-			<id>afester</id>
-			<name>Andreas Fester</name>
-			<roles>
-				<role>Emeritus</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>carnold</id>
-			<name>Curtis Arnold</name>
-			<roles>
-				<role>Emeritus</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>cdevienne</id>
-			<name>Christophe de Vienne</name>
-			<roles>
-				<role>Emeritus</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>mcatan</id>
-			<name>Michael Catanzariti</name>
-			<roles>
-				<role>Emeritus</role>
-			</roles>
-		</developer>
-		<!--End Emeritus-->
-	</developers>
-
-	<contributors>
-		<contributor>
-			<name>Andrew Lazarus</name>
-		</contributor>
-	</contributors>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>com.googlecode.cmake-maven-project</groupId>
-				<artifactId>cmake-maven-plugin</artifactId>
-				<version>3.16.3-b1</version>
-
-				<executions>
-					<execution>
-						<id>cmake-generate</id>
-						<goals>
-							<goal>generate</goal>
-						</goals>
-
-						<configuration>
-							<sourcePath>${project.basedir}</sourcePath>
-							<targetPath>${project.build.directory}/${platform}</targetPath>
-							<classifier>${cmake.classifier}</classifier>
-							<options>${cmake.options}</options>
-							<environmentVariables>
-								<CMAKE_CLASSIFIER>${cmake.classifier}</CMAKE_CLASSIFIER>
-							</environmentVariables>
-							<downloadBinaries>${download.cmake}</downloadBinaries>
-						</configuration>
-					</execution>
-
-					<execution>
-						<id>cmake-compile</id>
-						<phase>process-resources</phase>
-						<goals>
-							<goal>compile</goal>
-						</goals>
-
-						<configuration>
-							<projectDirectory>${project.build.directory}/${platform}</projectDirectory>
-							<classifier>${cmake.classifier}</classifier>
-							<config>${cmake.config}</config>
-							<downloadBinaries>true</downloadBinaries>
-						</configuration>
-					</execution>
-
-					<execution>
-						<phase>test</phase>
-						<id>cmake-run-tests</id>
-						<goals>
-							<goal>test</goal>
-						</goals>
-
-						<configuration>
-							<buildDirectory>${project.build.directory}/${platform}</buildDirectory>
-							<testFailureIgnore>true</testFailureIgnore>
-							<ctest.skip.tests>${maven.test.skip}</ctest.skip.tests>
-							<config>${cmake.config}</config>
-							<threadCount>1</threadCount>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<artifactId>maven-antrun-plugin</artifactId>
-				<version>1.7</version>
-				<executions>
-					<execution>
-						<phase>package</phase>
-						<id>autogen</id>
-						<configuration>
-							<target>
-								<ant target="autogen" />
-							</target>
-						</configuration>
-						<goals>
-							<goal>run</goal>
-						</goals>
-					</execution>
-
-					<execution>
-						<phase>site</phase>
-						<id>site</id>
-						<configuration>
-							<target>
-								<ant target="site" />
-							</target>
-						</configuration>
-						<goals>
-							<goal>run</goal>
-						</goals>
-					</execution>
-
-					<execution>
-						<phase>post-site</phase>
-						<id>post-site</id>
-						<configuration>
-							<target>
-								<ant target="post-site" />
-							</target>
-						</configuration>
-						<goals>
-							<goal>run</goal>
-						</goals>
-					</execution>
-
-					<execution>
-						<phase>site-deploy</phase>
-						<id>site-deploy</id>
-						<configuration>
-							<target>
-								<ant target="site-deploy" />
-							</target>
-						</configuration>
-						<goals>
-							<goal>run</goal>
-						</goals>
-					</execution>
-				</executions>
-
-				<dependencies>
-					<dependency>
-						<groupId>org.apache.ant</groupId>
-						<artifactId>ant</artifactId>
-						<version>1.9.3</version>
-					</dependency>
-
-					<dependency>
-						<groupId>ant-contrib</groupId>
-						<artifactId>ant-contrib</artifactId>
-						<version>1.0b2</version>
-					</dependency>
-				</dependencies>
-			</plugin>
-
-			<plugin>
-				<artifactId>maven-assembly-plugin</artifactId>
-				<version>3.2.0</version>
-				<configuration>
-					<descriptors>
-						<descriptor>src/assembly/source.xml</descriptor>
-					</descriptors>
-					<appendAssemblyId>false</appendAssemblyId>
-					<tarLongFileMode>gnu</tarLongFileMode>
-				</configuration>
-				<executions>
-					<execution>
-						<phase>package</phase>
-						<goals>
-							<goal>single</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>rat-maven-plugin</artifactId>
-				<version>1.0-alpha-3</version>
-			</plugin>
-
-			<plugin>
-				<artifactId>maven-site-plugin</artifactId>
-				<version>3.3</version>
-				<configuration>
-					<templateFile>${basedir}/src/site/site.vm</templateFile>
-				</configuration>
-			</plugin>
-
-			<plugin>
-				<artifactId>maven-release-plugin</artifactId>
-				<version>2.3</version>
-				<configuration>
-					<tagNameFormat>v@{project.version}-RCx</tagNameFormat>
-					<goals>site-deploy assembly:single</goals>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-
-	<reporting>
-		<excludeDefaults>true</excludeDefaults>
-		<plugins>
-			<plugin>
-				<artifactId>maven-project-info-reports-plugin</artifactId>
-				<version>2.7</version>
-				<reportSets>
-					<reportSet>
-						<reports>
-							<report>scm</report>
-							<report>dependencies</report>
-							<report>mailing-list</report>
-							<report>license</report>
-						</reports>
-					</reportSet>
-				</reportSets>
-			</plugin>
-
-			<plugin>
-				<artifactId>maven-changes-plugin</artifactId>
-				<version>2.9</version>
-				<reportSets>
-					<reportSet>
-						<reports>
-							<report>changes-report</report>
-						</reports>
-					</reportSet>
-				</reportSets>
-				<configuration>
-					<issueLinkTemplatePerSystem>
-						<GHPR>https://github.com/apache/logging-log4cxx/pull/%ISSUE%</GHPR>
-						<JIRA>%URL%/%ISSUE%</JIRA>
-					</issueLinkTemplatePerSystem>
-				</configuration>
-			</plugin>
-		</plugins>
-	</reporting>
-
-	<distributionManagement>
-		<repository>
-			<id>tmp.repo</id>
-			<url>file:///tmp</url>
-		</repository>
-		<site>
-			<id>logging.site</id>
-			<url>file:///${user.dir}/target/site-deploy/${project.version}</url>
-		</site>
-	</distributionManagement>
-
-	<profiles>
-		<profile>
-			<id>linux-x86_64-debug</id>
-			<properties>
-				<platform>linux-x86_64</platform>
-				<build.type>debug</build.type>
-			</properties>
-		</profile>
-		<profile>
-			<id>linux-x86_64-release</id>
-			<activation>
-				<os>
-					<family>linux</family>
-					<arch>amd64</arch>
-				</os>
-			</activation>
-			<properties>
-				<platform>linux-x86_64</platform>
-				<build.type>release</build.type>
-				<cmake.classifier>linux-x86_64</cmake.classifier>
-			</properties>
-		</profile>
-		<profile>
-			<id>Win32</id>
-			<properties>
-				<windowsArchitecture>Win32</windowsArchitecture>
-			</properties>
-		</profile>
-		<profile>
-			<id>windows-debug</id>
-			<properties>
-				<platform>windows-${windowsArchitecture}</platform>
-				<build.type>debug</build.type>
-				<cmake.classifier>windows-x86_64</cmake.classifier>
-				<cmake.options>-A${windowsArchitecture}</cmake.options>
-				<cmake.config>${build.type}</cmake.config>
-			</properties>
-		</profile>
-		<profile>
-			<id>windows-release</id>
-			<activation>
-				<os>
-					<family>windows</family>
-					<arch>amd64</arch>
-				</os>
-			</activation>
-			<properties>
-				<platform>windows-${windowsArchitecture}</platform>
-				<build.type>release</build.type>
-				<cmake.classifier>windows-x86_64</cmake.classifier>
-				<cmake.options>-A${windowsArchitecture}</cmake.options>
-				<cmake.config>${build.type}</cmake.config>
-			</properties>
-		</profile>
-		<profile>
-			<id>mac-x86_64-debug</id>
-			<properties>
-				<platform>mac-x86_64</platform>
-				<build.type>debug</build.type>
-				<cmake.classifier>mac-x86_64</cmake.classifier>
-				<cmake.config>${build.type}</cmake.config>
-			</properties>
-		</profile>
-		<profile>
-			<id>mac-x86_64-release</id>
-			<activation>
-				<os>
-					<family>mac</family>
-					<arch>x86_64</arch>
-				</os>
-			</activation>
-			<properties>
-				<platform>mac-x86_64</platform>
-				<build.type>release</build.type>
-				<cmake.classifier>mac-x86_64</cmake.classifier>
-				<cmake.config>${build.type}</cmake.config>
-			</properties>
-		</profile>
-	</profiles>
-</project>
diff --git a/release_perform.sh b/release_perform.sh
deleted file mode 100755
index b55461c..0000000
--- a/release_perform.sh
+++ /dev/null
@@ -1,97 +0,0 @@
-#! /bin/bash -e
-# 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.
-#
-
-##
-# Perform a release.
-#
-# Performing a release involves Maven currently to build and test things and we ran into problems
-# with the default dir structure maven assumes. This script works around those and we need to sign
-# the release archives anyway, which can be easily automated as well to not need to follow manual
-# instructions always.
-#
-# It's important to note that this script is expected to be executed in the branch "next_stable",
-# most likely prepared by the preparing counterpart.
-#
-
-function main
-{
-  # log4cxx is able to build using private copies of apr and apr-util, which are expected in some
-  # special relative dir structure. That doesn't work with the default working dir "perform" uses,
-  # which is "target/checkout". So we either need to make apr and apr-util available in "target" or
-  # change the working dir. Making available seems easy using symlinks, but "mvn clean" deletes the
-  # contents(!) of the linked dirs then. And always copying things around seems a bit unnecessary as
-  # well, so I'm using a relocation of the folder for now. The downside is that "mvn clean" ignores
-  # that dir by default.
-  WD_RELEASE="$( pwd)/../log4cxx-next_stable"
-  WD_DIST_DEV="$(pwd)/../log4cxx-dist-dev"
-
-  perform_release
-  prepare_dist_dev
-  sign_and_copy
-  publish_for_vote
-}
-
-function perform_release
-{
-  rm -rf "${WD_RELEASE}"
-  mvn release:perform "-DworkingDirectory=${WD_RELEASE}"
-}
-
-# Prepare dist/dev to get the release candidate published for a vote.
-function prepare_dist_dev
-{
-  mkdir -p "${WD_DIST_DEV}"
-  pushd    "${WD_DIST_DEV}" > /dev/null
-
-  if [ ! -d ".svn" ]
-  then
-    svn co "https://dist.apache.org/repos/dist/dev/logging/log4cxx" .
-  fi
-  svn up
-}
-
-function sign_and_copy
-{
-  # Might be a good idea to have another look at the GPG-plugin for Maven in the future:
-  #
-  # http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/
-  # http://maven.apache.org/plugins/maven-gpg-plugin/
-  pushd "${WD_RELEASE}/target" > /dev/null
-  for file in *.tar.gz *.zip
-  do
-    echo "Processing ${file}:"
-
-    gpg -ab --yes "${file}" > "${file}.asc"
-    sha512sum     "${file}" > "${file}.sha512"
-
-    # No symlinks because those would be treated as is, no hard-links because it should be safer for
-    # commits.
-    cp --force "${file}"        "${WD_DIST_DEV}"
-    cp --force "${file}.asc"    "${WD_DIST_DEV}"
-    cp --force "${file}.sha512" "${WD_DIST_DEV}"
-  done
-}
-
-function publish_for_vote
-{
-  pushd "${WD_DIST_DEV}" > /dev/null
-  echo "Please validate the files in $(pwd)"
-  #svn add --force *.*
-  #svn ci  -m "Publishing artifacts for new release to vote on."
-}
-
-main
diff --git a/release_prepare.sh b/release_prepare.sh
deleted file mode 100755
index e2660d8..0000000
--- a/release_prepare.sh
+++ /dev/null
@@ -1,242 +0,0 @@
-#! /bin/bash
-# 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.
-#
-
-##
-# Prepare a release.
-#
-# We need to update dates and version numbers at various places during releases and things can go
-# wrong, so another RC might need to be released. Am not sure if/how those things are properly
-# handled using the Maven release plugin, because that moves versions of the current branch forward
-# and doesn't seem to provide a way to say that a new release is just another RC for some former
-# release. Additionally, after the current branch has been moved forward, it might have been used to
-# merge new changes already. So how to tell Maven to do another release with a former version?
-#
-# So the current approach of this script is to always create a new branch "next_stable" which acts
-# as the base for releases only. One needs to manually merge changes to the code into that branch
-# as needed for making a release work, but keep all other changes to "master" etc. outside. We try
-# to handle setting release dates, current number of release candidate etc. here automatically as
-# much as possible. Some of that info is even merged back into some source branch, e.g. "master",
-# because release dates in files like "src/changes/changes.xml" need to be updated with additional
-# candidates or later releases.
-#
-# This script can be invoked with "next_stable" being the current branch already or with some other
-# and "next_stable" is checked out automatically. If it's invoked with some other branch, release
-# dates, new development version etc. are merged to the branch the script was invoked with. Without
-# another branch, those changes need to be done/merged manually to wherever they need to be in the
-# end, most likely "master". If only "master" should be supported in the future, merging back into
-# that might be hard-coded, currently it isn't to support arbitrary source branches from which a
-# release gets initiated. If "next_stable" is the starting branch, it's assumed to only create
-# another release based on a former release, without merging things back to anywhere.
-#
-
-function main
-{
-  #exit_on_changes
-
-  branch_starting=$(      git branch | grep "\*" | cut -d " " -f 2)
-  branch_starting_is_ns=$(git branch | grep "\* next_stable")
-
-  co_next_stable
-  set_release_date_if
-  update_scm_tag_name_format
-
-  exec_mvn
-  exit_on_started_with_ns
-
-  exit_on_no_new_release_cycle
-  proc_new_release_cycle
-}
-
-function exit_on_changes
-{
-  if [[ -n $(git status --short) || -n $(git diff-index HEAD) ]]
-  then
-    echo Maven release process requires committed changes!
-    exit 1
-  fi
-}
-
-function co_next_stable
-{
-  if [ -z "${branch_starting_is_ns}" ]
-  then
-    # If we didn't start with "next_stable", don't merge the starting branch, because it contains
-    # changes regarding new development iteration etc. we don't want to have. People need to merge
-    # relevant changes manually.
-    git checkout "next_stable" || git checkout -b "next_stable"
-  fi
-}
-
-function git_commit_if
-{
-  if ! git diff-index --quiet HEAD
-  then
-    git commit -m "${1}"
-  fi
-}
-
-function set_release_date_if
-{
-  local today=$(date "+%Y-%m-%d")
-  sed -i -r "1,/date=\".+?\"/ s/date=\".+?\"/date=\"${today}\"/" "src/changes/changes.xml"
-  git add "src/changes/changes.xml"
-
-  if ! git diff-index --quiet HEAD
-  then
-    git commit -m "Set release date to today."
-    if [ -z "${branch_starting_is_ns}" ]
-    then
-      local commit_changes=$(git log --max-count=1 | grep "commit" | cut -d " " -f 2)
-      git checkout "${branch_starting}"
-      git merge    "${commit_changes}"
-      git checkout "next_stable"
-    fi
-  fi
-}
-
-function update_scm_tag_name_format
-{
-  local scm_tag_name_format=$(grep "<tagNameFormat>" "pom.xml")
-  local scm_tag_name_format_needs_one=$(echo "${scm_tag_name_format}" | grep -E -e "-RCx")
-  local scm_tag_name_format_needs_inc=$(echo "${scm_tag_name_format}" | grep -E -e "-RC[0-9]+" | sed -r "s/.+?-RC([0-9]+).+?/\1/")
-
-  if [ -n "${scm_tag_name_format_needs_one}" ]
-  then
-    sed -i -r "s/(<tagNameFormat>.+?-RC)x/\11/" "pom.xml"
-  fi
-  if [ -n "${scm_tag_name_format_needs_inc}" ]
-  then
-    local inced_nr=$((${scm_tag_name_format_needs_inc} + 1))
-    sed -i -r "s/(<tagNameFormat>.+?-RC)[0-9]+/\1${inced_nr}/" "pom.xml"
-  fi
-
-  git add "pom.xml"
-  git commit -m "scm.tagNameFormat reconfigured to new RC number."
-}
-
-function get_pom_curr_ver
-{
-  # \t doesn't seem to work for grep for some reason.
-  echo "$(grep -E -e "^\s<version>" "pom.xml" | sed -r "s/^\t<.+>(.+)<.+>/\1/")"
-}
-
-function get_mvn_prepare_new_dev_ver
-{
-  if [ -n "${branch_starting_is_ns}" ]
-  then
-    echo "$(get_pom_curr_ver)"
-    return 0
-  fi
-
-  # Maven is able to calculate a useful new version itself, even if it warns about not being able to
-  # parse an empty version.
-  echo ""
-}
-
-##
-# Revert new version in "pom.xml" assigned by Maven.
-#
-# During release preparation Maven always assigns some new development version to the "pom.xml",
-# which is either a new calculated one or one we specified on our own already to be the same like
-# before. The first case is needed to get a new version into "release.properties", from where it
-# might be merged into a starting branch. In any case, within "next_stable" we want to keep the
-# one known version and therefore need to always revert any changes made by maven. So if a specific
-# new version is provided, always keep that, while without use the formerly available version of the
-# file. The caller most likely already has both values and additionally we are called AFTER Maven
-# already changed "pom.xml", so can't get the old value on our own easily anway.
-#
-# @param[in] Original version from "pom.xml".
-# @param[in] Specific version to be used by Maven.
-#
-function revert_mvn_prepare_new_dev_ver
-{
-  local pom_orig_ver="${1}"
-  local new_dev_ver="${2}"
-  local pom_new_ver="${new_dev_ver:-${pom_orig_ver}}"
-
-  sed -i -r "s/^(\t<version>).+(<)/\1${pom_new_ver}\2/" "pom.xml"
-  git add "pom.xml"
-  git_commit_if "Revert to ${pom_new_ver}."
-}
-
-function exec_mvn
-{
-  local pom_orig_ver="$(get_pom_curr_ver)"
-  local new_dev_ver="$( get_mvn_prepare_new_dev_ver)"
-  local prepare_args="-Dresume=false"
-
-  # Avoid a warning about not being able to parse an empty version:
-  if [ -n "${new_dev_ver}" ]
-  then
-    prepare_args="${prepare_args} -DdevelopmentVersion=${new_dev_ver}"
-  fi
-
-  mvn clean                           || exit 1
-  mvn release:prepare ${prepare_args} || exit 1
-  revert_mvn_prepare_new_dev_ver "${pom_orig_ver}" "${new_dev_ver}"
-}
-
-function exit_on_started_with_ns
-{
-  if [ -n "${branch_starting_is_ns}" ]
-  then
-    exit 0
-  fi
-}
-
-function exit_on_no_new_release_cycle
-{
-  git checkout "${branch_starting}"
-  local new_release_cycle=$(grep 'date="XXXX-XX-XX"' "src/changes/changes.xml")
-
-  if [ -n "${new_release_cycle}" ]
-  then
-    git checkout "next_stable"
-    exit 0
-  fi
-}
-
-function proc_new_release_cycle
-{
-  git checkout "${branch_starting}"
-
-  local commit_mvn_next_dev_iter=${1}
-  local new_dev_ver=$(      grep -E "^project.dev.log4cxx" "release.properties" | cut -d "=" -f 2)
-  local new_dev_ver_short=$(grep -E "^project.dev.log4cxx" "release.properties" | cut -d "=" -f 2 | cut -d "-" -f 1)
-  local new_release=$(cat <<-"END"
-	<body>\n\
-		<release	version="VER_NEEDED"\n\
-					date="XXXX-XX-XX"\n\
-					description="Maintenance release.">\n\
-		<\/release>\n
-END
-)
-  local new_release="${new_release/VER_NEEDED/${new_dev_ver_short}}"
-
-  sed -i -r "s/AC_INIT\(\[log4cxx\], \[.+?\]\)/AC_INIT([log4cxx], [${new_dev_ver_short}])/" "configure.ac"
-  sed -i -r "s/^(\t<version>).+(<)/\1${new_dev_ver}\2/"                                     "pom.xml"
-  sed -i -r "s/<body>/${new_release}/"                                                      "src/changes/changes.xml"
-
-  git add "configure.ac"
-  git add "pom.xml"
-  git add "src/changes/changes.xml"
-
-  git_commit_if "Prepare for next development iteration: ${new_dev_ver_short}"
-  git checkout  "next_stable"
-}
-
-main
diff --git a/release_purge.sh b/release_purge.sh
deleted file mode 100755
index b6eeb2f..0000000
--- a/release_purge.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /bin/bash
-# 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.
-#
-
-##
-# Purge (some) releases during development of release-scripts.
-#
-# This script is mainly used during development of the release-scripts themself and simply deletes
-# branches and tags created during tests of the release process. Be very careful with execution!
-#
-
-function main
-{
-  purge_branch_and_tag
-  revert_pom
-  revert_changes
-  commit_reverts
-}
-
-function purge_branch_and_tag
-{
-  git checkout "release_scripts"
-
-  git branch -D "next_stable"
-  git push --delete "origin" "next_stable"
-
-  for tag in $(git tag -l | grep "v0.11.0-RC")
-  do
-    git tag  --delete          "${tag}"
-    git push --delete "origin" "${tag}"
-  done
-}
-
-function revert_pom
-{
-  sed -i -r "s/^(\t<version>).+(<)/\10.11.0-SNAPSHOT\2/" "pom.xml"
-}
-
-function revert_changes
-{
-  if [ -n "$(grep "version=\"0.11.1\"" "src/changes/changes.xml")" ]
-  then
-    # Remove not needed "release" node.
-    sed -i -r "1,/.+<release.+/ s/.+<release.+//"         "src/changes/changes.xml"
-    sed -i -r "1,/.+date=.+/ s/.+date=.+//"               "src/changes/changes.xml"
-    sed -i -r "1,/.+description=.+/ s/.+description=.+//" "src/changes/changes.xml"
-    sed -i -r "1,/.+<\/release.+/ s/.+<\/release.+//"     "src/changes/changes.xml"
-
-    # Don't know how to remove the left newlines easier...
-    local changes=$(cat "src/changes/changes.xml")
-    echo "${changes/$'\n\n\n\n\n'/}" > "src/changes/changes.xml"
-  fi
-
-  # Last release date needs to be "unknown":
-  sed -i -r "1,/.+date=.+/ s/date=\".+\"/date=\"XXXX-XX-XX\"/" "src/changes/changes.xml"
-}
-
-function commit_reverts
-{
-  git add "pom.xml"
-  git add "src/changes/changes.xml"
-
-  git commit -m "No 0.11.1 yet."
-}
-
-main
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aa2d16e..283283c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,10 +1,11 @@
+cmake_policy(SET CMP0079 NEW)
+
 add_subdirectory(main)
 target_compile_definitions(log4cxx PRIVATE ${LOG4CXX_COMPILE_DEFINITIONS} ${APR_COMPILE_DEFINITIONS} ${APR_UTIL_COMPILE_DEFINITIONS} )
 target_include_directories(log4cxx INTERFACE $<INSTALL_INTERFACE:include> PRIVATE ${APR_INCLUDE_DIR} ${APR_UTIL_INCLUDE_DIR})
 target_link_libraries(log4cxx PRIVATE ${APR_UTIL_LIBRARIES} EXPAT::EXPAT ${APR_LIBRARIES} ${APR_SYSTEM_LIBS})
 if(WIN32)
 # The ODBC appender is always enabled in the Windows configuration
-cmake_policy(SET CMP0079 NEW)
 target_link_libraries(log4cxx PRIVATE odbc32.lib)
 option(LOG4CXX_INSTALL_PDB "Install .pdb files (if generated)"  ON)
 endif()
@@ -13,3 +14,5 @@
    add_subdirectory(test)
    add_subdirectory(examples/cpp)
 endif()
+
+add_subdirectory(site)
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index 4c94395..0000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,17 +0,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.
-#
-SUBDIRS      = main examples site test
-DIST_SUBDIRS = ${SUBDIRS} m4
diff --git a/src/ant/common.xml b/src/ant/common.xml
deleted file mode 100644
index 1f9f192..0000000
--- a/src/ant/common.xml
+++ /dev/null
@@ -1,212 +0,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.
-
--->
-

-<property	file="build.properties"
-/>
-<property	name="debug"
-			value="true"
-/>
-<property	name="rtti"
-			value="false"
-/>
-<property	name="optimize"
-			value="none"
-/>
-<property	name="lib.type"

-			value="shared"

-/>

-<property	name="runtime"
-			value="dynamic"
-/>

-
-<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
-
-<target name="os-detect">
-	<condition	property="os.family"
-				value="mac">
-		<os family="mac" />
-	</condition>
-	<condition	property="os.family"
-				value="windows">
-		<os family="windows" />
-	</condition>
-	<property	name="os.family"
-				value="unix"
-	/>
-

-	<condition	property="is-mac"
-				value="1">
-		<equals arg1="${os.family}" arg2="mac" />
-	</condition>
-	<condition	property="is-windows"
-				value="1">
-		<equals arg1="${os.family}" arg2="windows" />
-	</condition>
-	<condition	property="is-unix" value="1">
-		<or>
-			<equals arg1="${os.family}" arg2="unix"		/>
-			<equals arg1="${os.family}" arg2="mac"		/>
-			<equals arg1="${os.family}" arg2="cygwin"	/>
-		</or>
-	</condition>
-</target>
-
-<target	name="win-init"
-		depends="os-detect"
-		if="is-windows">
-	<property	name="compiler"
-				value="msvc"
-	/>
-
-	<condition	property="is-bcc"
-				value="true">
-		<or>
-			<equals arg1="${compiler}" arg2="bcc" />
-		</or>
-	</condition>
-
-	<condition	property="is-msvc"
-				value="true">
-		<or>
-			<equals arg1="${compiler}" arg2="msvc" />
-		</or>
-	</condition>
-
-	<condition	property="is-mingw"
-				value="true">
-		<or>
-			<equals arg1="${compiler}" arg2="gcc" />
-			<equals arg1="${compiler}" arg2="g++" />
-		</or>
-	</condition>

-</target>
-
-<target	name="mac-init"
-		depends="os-detect"
-		if="is-mac">
-	<property	name="project.type"
-				value="xcode"
-	/>
-</target>
-
-<target	name="unix-init"
-		depends="mac-init" if="is-unix">
-	<property	name="compiler"
-				value="gcc"
-	/>
-
-	<condition	property="has-expat"
-				value="true">
-		<not><isset property="is-mac" /></not>
-	</condition>
-	<condition	property="is-cygwin"
-				value="true">
-		<os family="windows" />
-	</condition>
-</target>
-
-<target	name="common-init"
-		depends="win-init, unix-init">
-
-	<condition	property="is-gcc"
-				value="true">
-		<or>
-			<equals arg1="${compiler}" arg2="gcc" />
-			<equals arg1="${compiler}" arg2="g++" />
-		</or>
-	</condition>
-
-	<condition	property="pic-option"
-				value="-fPIC">
-		<and>
-			<isset	property="is-gcc"	/>
-			<istrue	value="${use-pic}"	/>
-		</and>
-	</condition>
-
-
-	<condition	property="is-debug"
-				value="true">
-		<istrue value="${debug}" />
-	</condition>
-
-	<condition	property="debug.release"
-				value="debug">
-		<isset property="is-debug" />
-	</condition>
-	<property	name="debug.release"
-				value="release"
-	/>
-
-	<condition	property="D.debug"
-				value="d">
-		<isset property="is-debug" />
-	</condition>
-	<property	name="D.debug"
-				value=""
-	/>
-
-	<condition	property="D.R"
-				value="d">
-		<isset property="is-debug" />
-	</condition>
-	<property	name="D.R"
-				value="r"
-	/>
-
-	<property	name="lib-suffix"
-				value=""
-	/>
-
-	<condition	property="is-static"
-				value="1">
-		<equals arg1="${lib.type}" arg2="static" />
-	</condition>
-	<condition	property="is-shared"
-				value="1">
-		<equals arg1="${lib.type}" arg2="shared" />
-	</condition>
-
-	<property	name="executable.dir"
-				value="${target.dir}/${debug.release}/${lib.type}"
-	/>
-
-	<property	name="projectsOnly"
-				value="false"
-	/>
-</target>
-
-<target	name="copy-if-changed-compare"
-		unless="force-copy">
-	<condition	property="force-copy"
-				value="2">
-		<not>
-			<filesmatch	file1="${tofile}"
-						file2="${file}"
-			/>
-		</not>
-	</condition>
-</target>
-
-<target	name="copy-if-changed"
-		depends="copy-if-changed-compare" if="force-copy">
-	<copy	tofile="${tofile}"
-			file="${file}"
-			overwrite="true"
-	/>
-</target>
\ No newline at end of file
diff --git a/src/assembly/source.xml b/src/assembly/source.xml
deleted file mode 100644
index 860fb2e..0000000
--- a/src/assembly/source.xml
+++ /dev/null
@@ -1,110 +0,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.
-
--->
-<assembly>
-	<id>source</id>
-	<formats>
-		<format>tar.gz</format>
-		<format>zip</format>
-	</formats>
-	<baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
-
-	<fileSets>
-		<!-- Some files need to be executable. -->
-		<fileSet>
-			<includes>
-				<include>ar-lib</include>
-				<include>autogen.sh</include>
-				<include>configure.bat</include>
-				<include>configure-aprutil.bat</include>
-				<include>configure</include>
-				<include>depcomp</include>
-				<include>install-sh</include>
-				<include>ltmain.sh</include>
-				<include>missing</include>
-			</includes>
-
-			<fileMode>0755</fileMode>
-		</fileSet>
-
-		<fileSet>
-			<includes>
-				<include>aclocal.m4</include>
-				<include>build.xml</include>
-				<include>CMakeLists.txt</include>
-				<include>configure.ac</include>
-				<include>config.guess</include>
-				<include>config.sub</include>
-				<include>INSTALL</include>
-				<include>KEYS</include>
-				<include>liblog4cxx.pc.in</include>
-				<include>LICENSE</include>
-				<include>Makefile.am</include>
-				<include>Makefile.in</include>
-				<include>NOTICE</include>
-				<include>pom.xml</include>
-				<include>src/**</include>
-			</includes>
-
-			<excludes>
-				<exclude>src/examples/cpp/console</exclude>
-				<exclude>src/examples/cpp/delayedloop</exclude>
-				<exclude>src/examples/cpp/stream</exclude>
-				<exclude>src/examples/cpp/trivial</exclude>
-				<exclude>src/m4/libtool.m4</exclude>
-				<exclude>src/m4/ltoptions.m4</exclude>
-				<exclude>src/m4/ltsugar.m4</exclude>
-				<exclude>src/m4/ltversion.m4</exclude>
-				<exclude>src/m4/lt~obsolete.m4</exclude>
-				<exclude>src/main/include/log4cxx/log4cxx.h</exclude>
-				<exclude>src/main/include/log4cxx/private/log4cxx_private.h</exclude>
-				<exclude>src/test/cpp/testsuite</exclude>
-				<exclude>src/test/resources/output/**</exclude>
-				<exclude>**/.libs/**</exclude>
-				<exclude>**/.deps/**</exclude>
-				<exclude>**/*.a</exclude>
-				<exclude>**/*.dll</exclude>
-				<exclude>**/*.dylib</exclude>
-				<exclude>**/*.la</exclude>
-				<exclude>**/*.lo</exclude>
-				<exclude>**/*.o</exclude>
-				<exclude>**/*.Po</exclude>
-				<exclude>**/*.so</exclude>
-				<exclude>**/Doxyfile</exclude>
-				<exclude>**/Makefile</exclude>
-			</excludes>
-
-			<fileMode>0644</fileMode>
-			<directoryMode>0755</directoryMode>
-		</fileSet>
-
-		<!-- "includeSiteDirectory" seems to add files with wrong permissions. -->
-		<fileSet>
-			<directory>target</directory>
-			<lineEnding>keep</lineEnding>
-			<outputDirectory>.</outputDirectory>
-
-			<includes>
-				<include>site/**</include>
-			</includes>
-
-			<fileMode>0644</fileMode>
-			<directoryMode>0755</directoryMode>
-		</fileSet>
-	</fileSets>
-</assembly>
-
diff --git a/src/changes/Makefile.am b/src/changes/Makefile.am
deleted file mode 100644
index 8e6be87..0000000
--- a/src/changes/Makefile.am
+++ /dev/null
@@ -1,15 +0,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.
-#
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
deleted file mode 100644
index fb2f76f..0000000
--- a/src/changes/changes.xml
+++ /dev/null
@@ -1,466 +0,0 @@
-<?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>
-	<properties>
-		<title>Changes</title>
-	</properties>
-
-	<body>
-		<release	version="0.11.0"
-					date="XXXX-XX-XX"
-					description="Maintenance release.">
-			<action issue="LOGCXX-512" type="fix">cmake and autotools generate different versioned binaries</action>
-			<action issue="LOGCXX-506" type="fix">CachedDateFormat reuses timestamps without updating milliseconds after formatting timestamp with ms == 654</action>
-			<action issue="LOGCXX-503" type="update">Checksums/Signatures don't match for log4cxx binaries</action>
-			<action issue="LOGCXX-502" type="update">appenderattachable.h function doc formatted "incorrectly"</action>
-			<action issue="LOGCXX-500" type="update">Logging in Timing-Critical Applications</action>
-			<action issue="LOGCXX-494" type="fix">Provide a windows build environment for the project by replacing the ant build with a CMake build</action>
-			<action issue="LOGCXX-493" type="fix">Wrong usage of milli- vs. micro- and non- vs. milliseconds in some docs.</action>
-			<action issue="LOGCXX-490" type="fix">conditional expression is constant</action>
-			<action issue="LOGCXX-488" type="fix">Space after log level hides messages</action>
-			<action issue="LOGCXX-484" type="fix">Spelling error s/excute/execute</action>
-			<action issue="LOGCXX-483" type="update">Not able to see hebrew values when logging in log4cxx</action>
-			<action issue="LOGCXX-482" type="fix">Build failure with GCC-6</action>
-			<action issue="LOGCXX-464" type="fix">TimeBasedRollingPolicy should append as configured on rollover</action>
-			<action issue="LOGCXX-455" type="fix">LogLog::setQuietMode(true) does not suppress exception reporting</action>
-			<action issue="LOGCXX-446" type="fix">make install fails, trying to overwrite header files</action>
-			<action issue="LOGCXX-443" type="fix">Return by const reference in Logger::getName()</action>
-			<action issue="LOGCXX-433" type="fix">Autoconf 2.69 needs 'ACLOCAL_AMFLAGS= -I .'</action>
-			<action issue="LOGCXX-428" type="fix">Wildcards in Makefile.am break either VPATH or non-VPATH installs</action>
-			<action issue="LOGCXX-425" type="fix">exceptions in CachedDateFormatTestCase after LOGCXX-420</action>
-			<action issue="LOGCXX-424" type="fix">liblog4cxx.pc.in should reflect dependency on apr-1, apr-1-util</action>
-			<action issue="LOGCXX-423" type="fix">Repair autogen script warnings</action>
-			<action issue="LOGCXX-422" type="fix">Regression of LOGCXX-420</action>
-			<action issue="LOGCXX-420" type="fix">Possible out_of_range exception for millisecond formats in CachedDateFormat</action>
-			<action issue="LOGCXX-417" type="fix">atoi undefined on Mac OS 10.9 compiling stringhelper.cpp</action>
-			<action issue="LOGCXX-416" type="fix">Configure and watch could crash on app exit with static linking</action>
-			<action issue="LOGCXX-415" type="fix">Empty XML configuration file causes crash</action>
-			<action issue="LOGCXX-414" type="fix">possibly wrong use of autotools docdir (due to Alex Zbarcea)</action>
-			<action issue="LOGCXX-413" type="fix">log4cxx doesn't compile on openembedded (due to Alex Zbarcea)</action>
-			<action issue="LOGCXX-412" type="fix">Log4cxx doesn't roll normally when working under multiple processes environment</action>
-			<action issue="LOGCXX-411" type="fix">Crash when logging on multiple threads.</action>
-			<action issue="LOGCXX-400" type="fix">C++11 does not allow char literals with highest bit set unless cast</action>
-			<action issue="LOGCXX-399" type="fix">Non-ascii character output wrong.</action>
-			<action issue="LOGCXX-398" type="fix">Infinite loop in Transcoder::encode(const LogString&amp; src, std::wstring&amp; dst)</action>
-			<action issue="LOGCXX-394" type="fix">Levels are not thread safe</action>
-			<action issue="LOGCXX-388" type="fix">Hierarchy::updateParents loops forever on illegal logger-name like '.logger1'</action>
-			<action issue="LOGCXX-382" type="fix">Mingw build type conversion error</action>
-			<action issue="LOGCXX-381" type="fix">Pkgconfig can't find dependencies properly if log4cxx built statically</action>
-			<action issue="LOGCXX-369" type="fix">Load Properties File Fails When There Are multibyte Characters in the Path</action>
-			<action issue="LOGCXX-368" type="fix">method and class name functions not properly implemented</action>
-			<action issue="LOGCXX-367" type="fix">Build fails on Linux with g++ 4.4</action>
-			<action issue="LOGCXX-366" type="fix">Errors when compile log4cxx 0.10.0 under Win7 x64 with Visual Studio 2010 (due to Christian Boos and Feng Nan)</action>
-			<action issue="LOGCXX-365" type="fix">Unit tests fail on system dates later than 2009-12-31.</action>
-			<action issue="LOGCXX-358" type="fix">SMTPAppender generating Emails with an empty body</action>
-			<action issue="LOGCXX-356" type="fix">apache-log4cxx-0.10.0\src\main\include\log4cxx\spi\configurator.h(57) : warning C4231: nonstandard extension used : 'extern' before template explicit instantiation</action>
-			<action issue="LOGCXX-353" type="fix">When a client disconnects the SocketHubAppender crashes on the next log message</action>
-			<action issue="LOGCXX-351" type="fix">Download page does not have link to KEYS file</action>
-			<action issue="LOGCXX-340" type="fix">Transcoder::encodeCharsetName bungles encoding</action>
-			<action issue="LOGCXX-339" type="update">Child thread does not inherit a copy of the mapped diagnostic context of its parent</action>
-			<action issue="LOGCXX-337" type="fix">Suggested fix for socketappender not reconnecting multiple times</action>
-			<action issue="LOGCXX-336" type="fix">Test compilation fails: Overloading ambiguity</action>
-			<action issue="LOGCXX-331" type="fix">DailyRollingFileAppender should roll if program doesn't run at rolling time</action>
-			<action issue="LOGCXX-320" type="fix">TLS memory of APR is not freed in destructor of APRInitializer</action>
-			<action issue="LOGCXX-319" type="fix">Please make sure that the LOG4CXX_* macro's can be used as ordinary statements.</action>
-			<action issue="LOGCXX-317" type="fix">Log4cxx triggers locking inversion which can result in a deadlock.</action>
-			<action issue="LOGCXX-313" type="fix">Build process fails in case of absence of iconv support in apr-util</action>
-			<action issue="LOGCXX-305" type="fix">Property/DOMConfigurator::configureAndWatch can continue to run after APR termination</action>
-			<action issue="LOGCXX-304" type="fix">BasicConfigurator::configure results in writer not set warning.</action>
-			<action issue="LOGCXX-303" type="fix">DOMConfigurator does not set ErrorHandler.</action>
-			<action issue="LOGCXX-300" type="fix">ODBCAppender connection settings broken (or just have changed).</action>
-			<action issue="LOGCXX-299" type="fix">odbcappender.cpp does not compile with unixODBC on linux.</action>
-			<action issue="LOGCXX-298" type="fix">SMTPAppender does not build properly with autotools.</action>
-			<action issue="LOGCXX-293" type="fix">Escape sequences not recognized in property files.</action>
-			<action issue="LOGCXX-292" type="fix">Value continuation does not properly handle CRLF in property files.</action>
-			<action issue="LOGCXX-291" type="fix">Tab characters are not recognized in property files.</action>
-			<action issue="LOGCXX-288" type="fix">Unnecessary trailing semi-colons after LOG4CXX_INFO et al in docs, examples and tests.</action>
-			<action issue="LOGCXX-286" type="fix">gcc 4.3 requires #include &lt;cstring&gt; when using memcpy and related.</action>
-			<action issue="LOGCXX-285" type="fix">LevelRangeFilter has default value for acceptOnMatch that is different from log4j</action>
-			<action issue="LOGCXX-284" type="fix">Unit tests fail to compile with xlc_r on AIX</action>
-			<action issue="LOGCXX-283" type="fix">Suspicious, but harmless, reuse of LOCAL1 in SyslogAppender</action>
-			<action issue="LOGCXX-282" type="fix">Thread::sleep not affected by Thread::interrupt.</action>
-			<action issue="LOGCXX-281" type="fix">Sun Studio 11 reports function hides base virtual function warning</action>
-			<action issue="LOGCXX-280" type="fix">tests and sample code unnecessarily compiled during default make target</action>
-			<action issue="LOGCXX-278" type="fix">Threads for reconnecting sockets do not end cleanly when program exits</action>
-			<action issue="LOGCXX-277" type="fix">Reconnection not working for sockets</action>
-			<action issue="LOGCXX-276" type="fix">AndFilter and others defined but not implemented</action>
-			<action issue="LOGCXX-275" type="fix">Headers cannot be included with very strict warning settings</action>
-			<action issue="LOGCXX-273" type="fix">Prevent filenamepatterntestcase from failing in some timezones</action>
-			<action issue="LOGCXX-272" type="update">Apache log4cxx 0.11.0 release</action>
-			<action issue="LOGCXX-271" type="fix">MDC::put will not overwrite existing key value pair</action>
-			<action issue="LOGCXX-270" type="fix">Add ability to compile out logging by logging level.</action>
-			<action issue="LOGCXX-267" type="fix">Local variables hide member variables</action>
-			<action issue="LOGCXX-266" type="fix">Eliminate Extra ";" ignored warnings</action>
-			<action issue="LOGCXX-265" type="fix">Eliminate anachronism warnings</action>
-			<action issue="LOGCXX-263" type="fix">Bad link to log4cxx-dev archive</action>
-			<action issue="LOGCXX-262" type="fix">socketappendertestcase and xmlsocketappendertestcase not run</action>
-			<action issue="LOGCXX-249" type="fix">Console appender crashes if layout is not set</action>
-
-			<action issue="32" system="GHPR" type="add">Set SONAME in cmake like autotools based buildsystem would do.</action>
-			<action issue="24" system="GHPR" type="add">Implementation of map-based filter.</action>
-			<action issue="21" system="GHPR" type="add">Added support for building log4cxx as a statically linked library on Windows.</action>
-			<action issue="14" system="GHPR" type="add">Replaced ant build with cmake.</action>
-			<action issue="13" system="GHPR" type="add">JSONLayout</action>
-
-			<action type="update">Behavior of StringHelper::startsWith and endsWith synced.</action>
-			<action type="update">Documented C (class) and M (method) log format keywords.</action>
-			<action type="add">LocationInfo for Borland C++ Builder and successors improved.</action>
-		</release>
-
-		<release	version="0.10.0"
-					date="2008-04-03"
-					description="First Apache release">
-			<action issue="LOGCXX-259" type="fix">Several appenders fail to compile in Visual Studio 2008</action>
-			<action issue="LOGCXX-258" type="fix">unable to build from make dist package due to missing doxygen file</action>
-			<action issue="LOGCXX-257" type="fix">ServerSocket::accept hangs on Unix</action>
-			<action issue="LOGCXX-256" type="fix">SocketHubAppender fails after accepting connection</action>
-			<action issue="LOGCXX-254" type="add">Add build option for static C RTL</action>
-			<action issue="LOGCXX-253" type="fix">Transcoder compilation error with utf-8 charset</action>
-			<action issue="LOGCXX-252" type="add">Add documentation for use of operator&lt;&lt; in logging requests</action>
-			<action issue="LOGCXX-251" type="fix">NDC::cloneStack and NDC::inherit missing in 0.10.0 RC2</action>
-			<action issue="LOGCXX-248" type="fix">ODBCAppender has unicode issues</action>
-			<action issue="LOGCXX-247" type="fix">MSVC project has wrong additional include directories</action>
-			<action issue="LOGCXX-246" type="fix">Config refresh hangs a client application that uses TelnetAppender</action>
-			<action issue="LOGCXX-243" type="fix">Problem Compile in Doxy</action>
-			<action issue="LOGCXX-242" type="update">Eliminate log4cxx proxies for APR types</action>
-			<action issue="LOGCXX-241" type="fix">Non-ascii named files have names mangled</action>
-			<action issue="LOGCXX-239" type="update">Inconsistent const qualification on logging methods.</action>
-			<action issue="LOGCXX-237" type="fix">Include missing headers</action>
-			<action issue="LOGCXX-236" type="fix">Re-order constructor initialiser lists to match declaration order</action>
-			<action issue="LOGCXX-235" type="add">Add ObjectPtrT::exchange</action>
-			<action issue="LOGCXX-234" type="fix">Assignment operator removes const qualifier</action>
-			<action issue="LOGCXX-233" type="update">Unnecessary casts in ObjectPtrT</action>
-			<action issue="LOGCXX-232" type="update">Drop src/performance</action>
-			<action issue="LOGCXX-231" type="fix">Deadlock in AsyncAppender</action>
-			<action issue="LOGCXX-230" type="update">Align ant build options with automake</action>
-			<action issue="LOGCXX-228" type="update">Remove @author tags</action>
-			<action issue="LOGCXX-227" type="update">Remove @since tags</action>
-			<action issue="LOGCXX-226" type="update">Default configurator uses *.properties in preference to *.xml</action>
-			<action issue="LOGCXX-225" type="update">Migrate unit tests from LGPL'd CPPUNIT to an ASL'd testing framework</action>
-			<action issue="LOGCXX-222" type="fix">trunk compile error.</action>
-			<action issue="LOGCXX-221" type="fix">ThreadID layout does not match debugger</action>
-			<action issue="LOGCXX-220" type="fix">Memory leaks when using MFC</action>
-			<action issue="LOGCXX-219" type="fix">suspicious warnings</action>
-			<action issue="LOGCXX-218" type="add">Visual Studio 8 build</action>
-			<action issue="LOGCXX-217" type="fix">Not initialized LoggerPtr segfault program.</action>
-			<action issue="LOGCXX-216" type="fix">crash on program exit</action>
-			<action issue="LOGCXX-215" type="update">Eliminate sqlext.h from odbcappender.h</action>
-			<action issue="LOGCXX-214" type="fix">Possible memory leak due to fault in build process (via make)</action>
-			<action issue="LOGCXX-213" type="fix">trace method implementation is missing</action>
-			<action issue="LOGCXX-212" type="fix">unittest failed</action>
-			<action issue="LOGCXX-211" type="fix">Crash(Segmentation Fault) in DailyRollingFileAppender when file change</action>
-			<action issue="LOGCXX-210" type="fix">HTMLLayout NDC null check</action>
-			<action issue="LOGCXX-209" type="fix">A message of type wchar_t* is not beeing written correctly to the internal message buffer (Revision: 592627)</action>
-			<action issue="LOGCXX-208" type="fix">isTraceEnabled implemenation missing in logger.cpp (Revision: 592627)</action>
-			<action issue="LOGCXX-204" type="fix">PatternParserTestCase and FileNamePatternTestCase fail only with VC6</action>
-			<action issue="LOGCXX-202" type="fix">ObjectPtrT has inconsistent const-ness on accessors</action>
-			<action issue="LOGCXX-201" type="add">Visual Studio 6 build</action>
-			<action issue="LOGCXX-200" type="add">Implement compression for RollingFileAppender</action>
-			<action issue="LOGCXX-197" type="fix">ant can't generate vc6 project</action>
-			<action issue="LOGCXX-196" type="fix">Syslog appender destructor can cause core</action>
-			<action issue="LOGCXX-195" type="fix">Syslog appender adds characters to output.</action>
-			<action issue="LOGCXX-194" type="fix">Garbage in log files when appenders are defined in multiple levels of the logger hierarchy</action>
-			<action issue="LOGCXX-193" type="update">Please rename or remove new local variable "buf" in Logger.h macros</action>
-			<action issue="LOGCXX-192" type="update">Suggested improvements to log4cxx webpages</action>
-			<action issue="LOGCXX-191" type="fix">Application cores when syslog appender is given an unreachable host/ip.</action>
-			<action issue="LOGCXX-190" type="fix">The 'logger.h' header includes itself.</action>
-			<action issue="LOGCXX-189" type="update">Migrate to Maven 2.0 for documentation and packaging</action>
-			<action issue="LOGCXX-188" type="update">Upgrade to apr 1.2.9 and apr-util 1.2.8</action>
-			<action issue="LOGCXX-187" type="fix">LogLog::emit() could potentially interleave messages</action>
-			<action issue="LOGCXX-186" type="fix">Garbage characters in log files when log requests from multiple threads with hyperthreading enabled</action>
-			<action issue="LOGCXX-184" type="fix">Crash when log level set to 'inherited'</action>
-			<action issue="LOGCXX-183" type="fix">Compiler warning: dereferencing type-punned pointer will break strict-aliasing rules</action>
-			<action issue="LOGCXX-182" type="fix">missing man page for simplesocketserver</action>
-			<action issue="LOGCXX-181" type="fix">Level::DEBUG and other non-local statics cause crash on app shutdown on AIX</action>
-			<action issue="LOGCXX-180" type="fix">Build fails at domconfigurator.h</action>
-			<action issue="LOGCXX-179" type="add">example applications do SIGABRT on aix 5.2</action>
-			<action issue="LOGCXX-178" type="fix">Link failure if wchar_t cannot be determined as UTF-16 or UTF-32</action>
-			<action issue="LOGCXX-177" type="fix">SocketImpl::accept uses private APR function: apr_wait_for_io_or_timeout</action>
-			<action issue="LOGCXX-175" type="fix">APRCharsetEncoder is not thread safe</action>
-			<action issue="LOGCXX-172" type="fix">configure fail with ".infig.status: error: cannot find input file:"</action>
-			<action issue="LOGCXX-171" type="add">Add project description file for projects.apache.org</action>
-			<action issue="LOGCXX-169" type="fix">XMLLayoutTestCase fails on compilers that do not provide location info</action>
-			<action issue="LOGCXX-168" type="fix">log4j.dtd does not contain rollingPolicy and other o.a.l.r.RFA elements</action>
-			<action issue="LOGCXX-167" type="fix">system locale charmap is not determined properly on Fedora Core 6</action>
-			<action issue="LOGCXX-165" type="fix">XMLSocketAppender may generate erroneous output due to mismatched encoding</action>
-			<action issue="LOGCXX-164" type="fix">XMLSocketAppender is disabled</action>
-			<action issue="LOGCXX-163" type="fix">liblog4cxx (svn 480882) does not link on Mac OS X 10.4</action>
-			<action issue="LOGCXX-162" type="fix">Problem printing string with embedded NULL character</action>
-			<action issue="LOGCXX-161" type="fix">Using RollingFileAppender increases the working set with each rollover</action>
-			<action issue="LOGCXX-160" type="fix">helpers/object.h: DECLARE_LOG4CXX_OBJECT macro definition is missing virtual destructor declaration</action>
-			<action issue="LOGCXX-159" type="fix">Initialization of local static objects out of order on Linux</action>
-			<action issue="LOGCXX-158" type="fix">tolower not defined in stringhelper.cpp</action>
-			<action issue="LOGCXX-157" type="fix">make install fails since @manual_dest@ replacement is missing in Makefiles</action>
-			<action issue="LOGCXX-156" type="update">immediate flush in console appender</action>
-			<action issue="LOGCXX-155" type="update">Update source headers per new ASF header policy</action>
-			<action issue="LOGCXX-153" type="add">Automate log4cxx site and doxygen generation and deployment</action>
-			<action issue="LOGCXX-152" type="fix">gcc warning about cast from `const void*' to `log4cxx::helpers::Object*' discards qualifiers from pointer target typ</action>
-			<action issue="LOGCXX-151" type="fix">Umlauts as literal in patternlayout won't be logged correct</action>
-			<action issue="LOGCXX-150" type="fix">logstream's operator&lt;&lt; declared in the wrong namespace</action>
-			<action issue="LOGCXX-149" type="fix">make dist does not work</action>
-			<action issue="LOGCXX-146" type="fix">DailyRollingFileAppender::~DailyRollingFileAppender must call finalize</action>
-			<action issue="LOGCXX-143" type="fix">-xarch=v8plus should be removed from Makefile.in</action>
-			<action issue="LOGCXX-142" type="fix">socketservertestcase.cpp does not compile with Sun Studio 11 on Solaris</action>
-			<action issue="LOGCXX-141" type="update">Upgrade to APR 1.2.7 or later</action>
-			<action issue="LOGCXX-140" type="fix">Handle leak with LoggingEvent::getCurrentThreadName</action>
-			<action issue="LOGCXX-139" type="fix">XMLLayoutTestCase uses inadequate filters for 64 bit platforms</action>
-			<action issue="LOGCXX-138" type="fix">XMLLayoutTestCase output and filtered output gets overwritten</action>
-			<action issue="LOGCXX-136" type="fix">DailyRollingFileAppender not using Property options</action>
-			<action issue="LOGCXX-135" type="update">Use std::string with logstream</action>
-			<action issue="LOGCXX-134" type="fix">FileAppender could create missing directories</action>
-			<action issue="LOGCXX-133" type="fix">Missing parenthesis in LOG4CXX_ASSERT</action>
-			<action issue="LOGCXX-132" type="fix">various segmentation faults in multithreaded application</action>
-			<action issue="LOGCXX-131" type="fix">TimeBasedRollingPolicy is declared "abstract"</action>
-			<action issue="LOGCXX-130" type="fix">Compile fails on gcc4.1</action>
-			<action issue="LOGCXX-129" type="fix">Asyncappender is full of race conditions (improper use of condition variables)</action>
-			<action issue="LOGCXX-127" type="fix">Main build.xml not referencing "env" properly.</action>
-			<action issue="LOGCXX-126" type="fix">std::cout stops working if log4cxx is first to output</action>
-			<action issue="LOGCXX-125" type="update">L7dTestCase is stubbed out</action>
-			<action issue="LOGCXX-124" type="fix">wchar_t constructor missing in class NDC</action>
-			<action issue="LOGCXX-123" type="fix">UTF-8 build fails on Linux</action>
-			<action issue="LOGCXX-120" type="fix">Wrong parameter description in Patternlayout</action>
-			<action issue="LOGCXX-119" type="fix">ndctestcase not working</action>
-			<action issue="LOGCXX-118" type="fix">Hierarchy corrupts with PropertyConfigurator</action>
-			<action issue="LOGCXX-117" type="fix">Memory leak with ThreadSpecificData on Win32</action>
-			<action issue="LOGCXX-116" type="fix">SVN head does not compiler with MinGW compiler</action>
-			<action issue="LOGCXX-115" type="fix">SVN head does not compile with Borland C++ compiler</action>
-			<action issue="LOGCXX-114" type="update">Upgrade APR to 1.2.2 from 1.1.0</action>
-			<action issue="LOGCXX-113" type="update">separate apr detection m4 codes from aclocal.m4</action>
-			<action issue="LOGCXX-112" type="update">change "static" to "auto" for Transcoder::decode() decoder and CharsetDecoder::getDefaultDecoder() decoder</action>
-			<action issue="LOGCXX-111" type="update">make Logger cache a LoggerRepositoryPtr instead of a "blind" pointer</action>
-			<action issue="LOGCXX-110" type="fix">try fix 64bit log4cxx_intptr_t</action>
-			<action issue="LOGCXX-107" type="fix">Can't compile log4cxx in ascii on Windows</action>
-			<action issue="LOGCXX-106" type="fix">maxFileSize has bad type in SizeBasedTriggeringPolicy file</action>
-			<action issue="LOGCXX-105" type="fix">Infinite loop in string replacing</action>
-			<action issue="LOGCXX-104" type="fix">ODBCAppender::close does not check if appender is already closed</action>
-			<action issue="LOGCXX-103" type="update">Much of CVS HEAD seems #if 0 out, especially ResourceBundle stuff</action>
-			<action issue="LOGCXX-100" type="fix">Fixes for ODBCAppender</action>
-			<action issue="LOGCXX-98" type="fix">Gump build fails for log4cxx-ant-no-wchar-t target</action>
-			<action issue="LOGCXX-94" type="update">simplesocketserver.cpp should use LOG4CXX_STR("...") not L"..."</action>
-			<action issue="LOGCXX-88" type="update">Explore use of security-enhanced CRT methods</action>
-			<action issue="LOGCXX-87" type="update">Remove remaining uses of Category and Priority</action>
-			<action issue="LOGCXX-86" type="add">Add TRACE level</action>
-			<action issue="LOGCXX-85" type="update">Mac OS/X fixes and enhancements</action>
-			<action issue="LOGCXX-84" type="fix">Problems with stream logging in UTF8, no WCHAR_T build</action>
-			<action issue="LOGCXX-83" type="fix">log4cxx::Level::ERROR fails to compile when GDI enabled</action>
-			<action issue="LOGCXX-82" type="fix">Compiling with stream.h in multiple object files errors</action>
-			<action issue="LOGCXX-81" type="fix">SimpleDateFormat does not compile on Solaris 2.95.2 gcc</action>
-			<action issue="LOGCXX-80" type="update">Migrated network appenders to APR network IO</action>
-			<action issue="LOGCXX-79" type="update">configure check for apr-util</action>
-			<action issue="LOGCXX-77" type="fix">Static builds broken</action>
-			<action issue="LOGCXX-76" type="add">user.home, user.dir, java.io.tmpdir available within configuration files</action>
-			<action issue="LOGCXX-75" type="add">Cygwin build</action>
-			<action issue="LOGCXX-74" type="add">MinGW build</action>
-			<action issue="LOGCXX-73" type="fix">Not loading configuration from log4cxx.properties or log4cxx.xml</action>
-			<action issue="LOGCXX-72" type="update">INSTALL out of date</action>
-			<action issue="LOGCXX-71" type="update">Update performance page on web site</action>
-			<action issue="LOGCXX-70" type="fix">Logic flaws in StringHelper::startsWith and StringHelper::endsWith</action>
-			<action issue="LOGCXX-67" type="fix">NTEventLogAppender always uses RPC method for logging and has inadequate error handling.</action>
-			<action issue="LOGCXX-66" type="fix">SyslogAppender append method currently stubbed out</action>
-			<action issue="LOGCXX-64" type="update">Migrate to APR network IO</action>
-			<action issue="LOGCXX-63" type="update">Platform appropriate line-feed convention</action>
-			<action issue="LOGCXX-62" type="update">log4cxx 0.10.0 release</action>
-			<action issue="LOGCXX-60" type="fix">XML layout can be mismatched with document encoding</action>
-			<action issue="LOGCXX-59" type="update">Implement encoding support for Writer appender</action>
-			<action issue="LOGCXX-58" type="fix">ImmediateFlush'd FileAppenders extremely slow on Windows</action>
-			<action issue="LOGCXX-57" type="add">Port log4j performance test</action>
-			<action issue="LOGCXX-56" type="fix">BasicConfiguration is unreliable</action>
-			<action issue="LOGCXX-55" type="add">DailyRolling File Appender</action>
-			<action issue="LOGCXX-54" type="fix">Eliminate use of boost-regex in unit tests</action>
-			<action issue="LOGCXX-53" type="fix">Problems compiling with MsDev 6.0 (space in paths)</action>
-			<action issue="LOGCXX-52" type="add">Migrate log4j 1.3 RollingFileAppender</action>
-			<action issue="LOGCXX-50" type="fix">variable name clash in macro</action>
-			<action issue="LOGCXX-49" type="add">Move timezone specification into pattern, remove locale specification</action>
-			<action issue="LOGCXX-48" type="add">Use hex representation for thread identifier</action>
-			<action issue="LOGCXX-47" type="fix">Check headers for missing declarations and Effective C++ violations</action>
-			<action issue="LOGCXX-46" type="fix">Extra semicolon after namespace closing paren</action>
-			<action issue="LOGCXX-45" type="fix">_T causes error : 1048576 cannot be used as a function</action>
-			<action issue="LOGCXX-44" type="add">GUMP integation</action>
-			<action issue="LOGCXX-43" type="add">configure/make help needed</action>
-			<action issue="LOGCXX-41" type="fix">Layout timestamp doesn't seem to adjust for daylight saving</action>
-			<action issue="LOGCXX-40" type="fix">PatternLayout does not support Java date format specifiers</action>
-			<action issue="LOGCXX-39" type="remove">Remove DailyRollingFileAppender</action>
-			<action issue="LOGCXX-37" type="fix">Unable to build log4cxx under Borland C++</action>
-			<action issue="LOGCXX-36" type="add">Migrate to Apache Portable Runtime threads</action>
-			<action issue="LOGCXX-35" type="remove">Avoid use of MSXML</action>
-			<action issue="LOGCXX-34" type="fix">Visual Studio 6 CVS build broken</action>
-			<action issue="LOGCXX-33" type="fix">log4cxx::Exception is not derived from std::exception</action>
-			<action issue="LOGCXX-32" type="fix">Missing copy constructors and assignment operators</action>
-			<action issue="LOGCXX-31" type="fix">Missing const qualifiers, Exception::getMessage() in particular.</action>
-			<action issue="LOGCXX-30" type="fix">StringTokenizer uses evil strtok and wcstok functions</action>
-			<action issue="LOGCXX-29" type="fix">Appender attributes are not passed passed to setOption correctly.</action>
-			<action issue="LOGCXX-28" type="fix">Appender threshold cannot be set in configuration files</action>
-			<action issue="LOGCXX-27" type="fix">Appender threshold cannot be set in configuration files</action>
-			<action issue="LOGCXX-26" type="fix">Default initialization is broken</action>
-			<action issue="LOGCXX-25" type="add">Add Ant+cpptasks build file</action>
-			<action issue="LOGCXX-24" type="fix">Class and module name not available in LogEvent</action>
-			<action issue="LOGCXX-23" type="fix">Unit tests have become stale</action>
-			<action issue="LOGCXX-22" type="fix">Backslashes in filenames in XML config of FileAppender broken</action>
-			<action issue="LOGCXX-21" type="add">Add check that libxml2 not libxml has been included</action>
-			<action issue="LOGCXX-19" type="add">Add .cvsignore's to ignore generated files</action>
-			<action issue="LOGCXX-18" type="add">LoggerStream Feature</action>
-			<action issue="LOGCXX-17" type="update">Use of non reentrant time functions</action>
-			<action issue="LOGCXX-16" type="fix">Misleading statements in Introduction to log4cxx</action>
-			<action issue="LOGCXX-15" type="fix">PatternLayout don't use locale time zone,it's use GMT tome zone</action>
-			<action issue="LOGCXX-14" type="add">add -Wall to compile log4cxx will get many warning</action>
-			<action issue="LOGCXX-13" type="add">Add branch optimization hint to LOG4CXX_DEBUG macro</action>
-			<action issue="LOGCXX-12" type="fix">the threshold of ApenderSkeleton can not be set by calling setOption.</action>
-			<action issue="LOGCXX-11" type="fix">Timezone may have side-effects</action>
-			<action issue="LOGCXX-10" type="fix">Conflicting definitions of tchar.h/simulatenous Unicode+MBCS</action>
-			<action issue="LOGCXX-8" type="fix">Compilation problems using VC5 or VC6 with later Platform SDKs</action>
-			<action issue="LOGCXX-7" type="fix">SocketAppender binary format not compatible with Chainsaw</action>
-			<action issue="LOGCXX-6" type="add">Win32 OutputDebugString</action>
-			<action issue="LOGCXX-5" type="fix">Preprocessor macro WIN32 used instead of _WIN32</action>
-			<action issue="LOGCXX-4" type="fix">initialization not working on many OS's</action>
-			<action issue="LOGCXX-3" type="fix">Missing #else</action>
-			<action issue="LOGCXX-2" type="fix">logger.h includes config.h</action>
-		</release>
-
-		<release	version="0.9.7"
-					date="2004-05-10">
-			<action type="fix">Fixed examples source code in the "Short introduction to log4cxx".</action>
-			<action type="fix">Fixed, in the renaming algorithm of RollingFileAppender and DailyRollingFileAppender, a problem specific to Unicode.</action>
-			<action type="fix">Fixed conflict with Windows macros "min" and "max", by renaming StrictMath::min and StrictMath::max to StrictMath::minimum and StrictMath::maximum.</action>
-			<action type="add">Port to HPUX 11.0.</action>
-			<action type="fix">Fixed segmentation fault in PropertyConfigurator.</action>
-			<action type="add">Port to Solaris.</action>
-			<action type="fix">Fixed MutexException thrown while destroying RollingFileAppender.</action>
-			<action type="fix">Logging macros can be used without explicity declaring the use of log4cxx namespace.</action>
-			<action type="fix">Fixed static library unresolved externals for msvc 6 and 7.1</action>
-		</release>
-
-		<release	version="0.9.6"
-					date="2004-04-11">
-			<action type="update">Timezone management has been optimized through the class TimeZone</action>
-			<action type="update">Inter-thread synchronization and reference counting has been optimized</action>
-			<action type="update">Reference counting now uses gcc atomic functions (bug 929078)</action>
-			<action type="update">Use of StringBuffer has been optimized.</action>
-			<action type="add">Support of localisation throug resourceBundles</action>
-			<action type="update">SyslogAppender now uses the system function 'syslog' to log on the local host. (only for POSIX systems)</action>
-			<action type="add">Added TimeZone configuration to PatternLayout (bug 912563)</action>
-			<action type="add">Support of the DailyRollingFileAppender (feature request 842765)</action>
-		</release>
-
-		<release	version="0.9.5"
-					date="2004-02-04">
-			<action type="add">Port of log4j Jnuit tests with Cppunit and Boost Regex.</action>
-			<action type="add">Added explicit exports for MSDEV 6 and MSDEV 7 (no further need of .def files)</action>
-			<action type="add">Custom levels can be configured through the DOMConfigurator and PropertyConfigurator classes (Level inherites from Object)</action>
-			<action type="add">Added a reference counter to LoggingEvent to avoid useless copies (LoggingEvent inherites from Object)</action>
-			<action type="add">The file log4j.xml as well as the file log4j.properties are now search for, in log4cxx initialization.</action>
-			<action type="add">The root logger can be assigned the "OFF" level.</action>
-			<action type="add">Added MSVC6 project missing files mutext.cpp and condition.cpp (bug 847397)</action>
-			<action type="fix">condition.cpp now compiles with MSVC6 (bug 847417)</action>
-			<action type="fix">fixed pure virtual function call in PropertyConfigurator::configureAndWatch (bug 848521)</action>
-			<action type="fix">XMLAppender now displays correct timestamp with MSVC 6 (bug 852836)</action>
-			<action type="add">SRLPORT 4.6 support.</action>
-			<action type="fix">Fixed an infinite loop in class Properties.</action>
-			<action type="fix">Fixed compilations problems with unicode.</action>
-			<action type="fix">Fixed SocketAppender bug concerning MDC and NDC.</action>
-		</release>
-
-		<release	version="0.9.4"
-					date="2003-10-25">
-			<action type="update">StringBuffer has been optimized.</action>
-			<action type="fix">Fixed miscellaneous threading problems.</action>
-			<action type="add">Added TimeZone support in PatternLayout (bug 796894)</action>
-			<action type="fix">Fixed threading configuration problems (bug 809125)</action>
-			<action type="fix">Fixed miscellaneous MSVC and cygwin compilation problems.</action>
-		</release>
-
-		<release	version="0.9.3"
-					date="2003-09-19">
-			<action type="update">Changed tstring to log4cxx::String and tostringstream to log4cxx::StringBuffer.</action>
-			<action type="fix">Fixed MSVC 2003 compilation erros and warnings.</action>
-			<action type="add">Added helpers for NDC and MDC.</action>
-			<action type="add">Added TimeZone support in TTCCLayout.</action>
-			<action type="fix">Fixed compilation problems with logger macros (LOG4CXX_...)</action>
-			<action type="fix">Fixed milliseconds formatting problem with MSVC 6.0 and 2003</action>
-			<action type="fix">Fixed AsyncAppender crash</action>
-			<action type="add">Added new tests	</action>
-			<action type="add">Added benchmarks</action>
-		</release>
-
-		<release	version="0.9.2"
-					date="2003-08-10">
-			<action type="fix">Fixed FreeBSD compilation problem with pthread mutex (class CriticalSection).</action>
-			<action type="fix">Fixed milliseconds formatting problem (class DateFormat).</action>
-			<action type="add">Long events (&gt; 1024 chars) are now supported in the class XMLSocketAppender.</action>
-			<action type="update">Carriage returns have been normalized in the class XMLLayout.</action>
-		</release>
-
-		<release	version="0.9.1"
-					date="2003-08-06">
-			<action type="fix">Fixed deadlock problems in classes Logger and AsyncAppender.</action>
-			<action type="fix">Fixed MSVC 6.0 compilation problems.</action>
-			<action type="add">Added MSVC 6.0 static libraty project.</action>
-			<action type="update">Default configuration for the SMTP options is "no".</action>
-		</release>
-
-		<release	version="0.9.0"
-					date="2003-08-06">
-			<action type="add">Added ODBCAppender (matching log4j JDBCAppender)</action>
-			<action type="add">Added SyslogAppender</action>
-			<action type="add">Added SMTPAppender (only for Linux/FreeBSD)</action>
-			<action type="add">Added BasicConfigurator</action>
-			<action type="add">Added a FileWatchDog in PropertyConfigurator and DOMConfigurator</action>
-			<action type="add">Possibility to load a custom LoggerFactory through the DOMConfigurator</action>
-			<action type="add">Changed time precision from seconds to milliseconds</action>
-			<action type="add">Added MSVC 6.0 'Unicode Debug' and 'Unicode Release' targets</action>
-			<action type="add">Added Java like System class.</action>
-		</release>
-
-		<release	version="0.1.1"
-					date="2003-07-09">
-			<action type="fix">Fixed MSVC 6.0 compilation problems concerning the 'Release' target</action>
-			<action type="add">Added MSVC 6.0 tests projects</action>
-		</release>
-
-		<release	version="0.1.0"
-					date="2003-07-08">
-			<action type="add">FreeBSD Autotools/Compilation support</action>
-			<action type="fix">Fixed TelnetAppender crash when a socket bind exception occured.</action>
-			<action type="add">Added log4j DTD support to XMLLayout and DOMConfigurator</action>
-			<action type="add">Can now send events in XML format over TCP (class XMLSocketAppender) for the log4j Chainsaw UI</action>
-			<action type="add">Now compiles with 'configure --enable-unicode' (UTF16 Unicode support)</action>
-			<action type="add">Added Java like Properties class. It's a helper for the PropertyConfigurator</action>
-			<action type="add">Added Java like objects with dynamic cast and instanciation. Custom objects can be configured through the DOMConfigurator and PropertyConfigurator classes</action>
-			<action type="add">Port of the PropertyConfigurator class</action>
-			<action type="add">Port of the "Map Diagnostic Context" (MDC) class</action>
-			<action type="add">Added 13 tests (try make check)</action>
-		</release>
-
-		<release	version="0.0.1"
-					date="2003-05-31">
-			<action type="add">Loggers, Hierarchy, Filters, Appenders, Layouts, NDC</action>
-			<action type="add">Appenders:
-				AsyncAppender, ConsoleAppender, FileAppender, NTEventLogAppender,
-				RollingFileAppender, SocketAppender, SocketHubAappender, TelnetAppender
-			</action>
-			<action type="add">Layouts:
-				HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout, XMLLayout
-			</action>
-			<action type="add">Filters:
-				DenyAllFilter, LevelMatchFilter, LevelRangeFilter, StringMatchFilter
-			</action>
-			<action type="add">Configurators: DOMConfigurator</action>
-		</release>
-	</body>
-</document>
diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am
deleted file mode 100644
index 83b32d8..0000000
--- a/src/examples/Makefile.am
+++ /dev/null
@@ -1,16 +0,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.
-#
-SUBDIRS = cpp
diff --git a/src/examples/cpp/CMakeLists.txt b/src/examples/cpp/CMakeLists.txt
index 05614b3..4677ebb 100644
--- a/src/examples/cpp/CMakeLists.txt
+++ b/src/examples/cpp/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(ALL_LOG4CXX_EXAMPLES console delayedloop stream trivial)
+set(ALL_LOG4CXX_EXAMPLES console delayedloop stream trivial custom-appender)
 
 foreach(exampleName IN LISTS ALL_LOG4CXX_EXAMPLES)
     add_executable(${exampleName} ${exampleName}.cpp)
@@ -6,3 +6,7 @@
     target_include_directories(${exampleName} PRIVATE ${CMAKE_CURRENT_LIST_DIR} $<TARGET_PROPERTY:log4cxx,INCLUDE_DIRECTORIES>)
     target_link_libraries(${exampleName} PRIVATE log4cxx ${APR_UTIL_LIBRARIES} ${XMLLIB_LIBRARIES} ${APR_LIBRARIES} ${APR_SYSTEM_LIBS})
 endforeach()
+
+configure_file( custom-appender.xml
+    ${CMAKE_CURRENT_BINARY_DIR}/custom-appender.xml
+    COPYONLY )
diff --git a/src/examples/cpp/Makefile.am b/src/examples/cpp/Makefile.am
deleted file mode 100644
index 8f2489d..0000000
--- a/src/examples/cpp/Makefile.am
+++ /dev/null
@@ -1,30 +0,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.
-#
-check_PROGRAMS = trivial delayedloop stream console
-
-AM_CPPFLAGS = -I$(top_srcdir)/src/main/include -I$(top_builddir)/src/main/include
-
-trivial_SOURCES = trivial.cpp
-trivial_LDADD = $(top_builddir)/src/main/cpp/liblog4cxx.la
-
-delayedloop_SOURCES = delayedloop.cpp
-delayedloop_LDADD = $(top_builddir)/src/main/cpp/liblog4cxx.la
-
-stream_SOURCES = stream.cpp
-stream_LDADD = $(top_builddir)/src/main/cpp/liblog4cxx.la
-
-console_SOURCES = console.cpp
-console_LDADD = $(top_builddir)/src/main/cpp/liblog4cxx.la
diff --git a/src/examples/cpp/custom-appender.cpp b/src/examples/cpp/custom-appender.cpp
new file mode 100644
index 0000000..5154090
--- /dev/null
+++ b/src/examples/cpp/custom-appender.cpp
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+#include <stdlib.h>
+#include <log4cxx/basicconfigurator.h>
+#include <log4cxx/helpers/object.h>
+#include <log4cxx/appenderskeleton.h>
+#include <log4cxx/helpers/stringhelper.h>
+#include <log4cxx/xml/domconfigurator.h>
+
+namespace log4cxx {
+
+class NullWriterAppender : public log4cxx::AppenderSkeleton {
+public:
+	DECLARE_LOG4CXX_OBJECT(NullWriterAppender)
+	BEGIN_LOG4CXX_CAST_MAP()
+	LOG4CXX_CAST_ENTRY(NullWriterAppender)
+	LOG4CXX_CAST_ENTRY_CHAIN(AppenderSkeleton)
+	END_LOG4CXX_CAST_MAP()
+
+	NullWriterAppender(){}
+
+	virtual void close(){}
+
+	virtual bool requiresLayout() const {
+		return false;
+	}
+
+	virtual void append(const spi::LoggingEventPtr& event, log4cxx::helpers::Pool& p){
+		// This gets called whenever there is a valid event for our appender.
+	}
+
+	virtual void activateOptions(log4cxx::helpers::Pool& /* pool */) {
+		// Given all of our options, do something useful(e.g. open a file)
+	}
+
+	virtual void setOption(const LogString& option, const LogString& value){
+		if (helpers::StringHelper::equalsIgnoreCase(option,
+										   LOG4CXX_STR("SOMEVALUE"), LOG4CXX_STR("somevalue"))){
+			// Do something with the 'value' here.
+		}
+	}
+};
+
+IMPLEMENT_LOG4CXX_OBJECT(NullWriterAppender)
+
+}
+
+int main( int argc, char** argv ){
+	log4cxx::xml::DOMConfigurator::configure( "custom-appender.xml" );
+
+	log4cxx::LoggerPtr rootLogger = log4cxx::Logger::getRootLogger();
+	log4cxx::LoggerPtr nullLogger = log4cxx::Logger::getLogger( "NullLogger" );
+
+	LOG4CXX_INFO( rootLogger, "This is some root message" );
+	LOG4CXX_INFO( nullLogger, "This message will be discarded" );
+}
diff --git a/src/examples/cpp/custom-appender.xml b/src/examples/cpp/custom-appender.xml
new file mode 100644
index 0000000..f7b40e8
--- /dev/null
+++ b/src/examples/cpp/custom-appender.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
+    <param name="Target" value="System.out"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %c %-5p - %m%n"/>
+    </layout>
+  </appender>
+
+  <appender name="NullAppender" class="NullWriterAppender">
+    <param name="SomeValue" value="Nothing"/>
+  </appender>
+
+  <root>
+     <priority value="info" />
+     <appender-ref ref="ConsoleAppender"/>
+  </root>
+
+  <logger name="NullLogger" additivity="false">
+     <appender-ref ref="NullAppender"/>
+  </logger>
+</log4j:configuration>
diff --git a/src/m4/Makefile.am b/src/m4/Makefile.am
deleted file mode 100644
index b678c61..0000000
--- a/src/m4/Makefile.am
+++ /dev/null
@@ -1,23 +0,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.
-#
-#DISTCLEANFILES = libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4
-
-dist-hook:
-	-rm -f	"$(distdir)/libtool.m4"		\
-		"$(distdir)/ltoptions.m4"	\
-		"$(distdir)/ltsugar.m4"		\
-		"$(distdir)/ltversion.m4"	\
-		"$(distdir)/lt~obsolete.m4"
diff --git a/src/m4/find_apr.m4 b/src/m4/find_apr.m4
deleted file mode 100644
index 88f64a7..0000000
--- a/src/m4/find_apr.m4
+++ /dev/null
@@ -1,202 +0,0 @@
-dnl -------------------------------------------------------- -*- autoconf -*-
-dnl Licensed to the Apache Software Foundation (ASF) under one or more
-dnl contributor license agreements.  See the NOTICE file distributed with
-dnl this work for additional information regarding copyright ownership.
-dnl The ASF licenses this file to You under the Apache License, Version 2.0
-dnl (the "License"); you may not use this file except in compliance with
-dnl the License.  You may obtain a copy of the License at
-dnl
-dnl     http://www.apache.org/licenses/LICENSE-2.0
-dnl
-dnl Unless required by applicable law or agreed to in writing, software
-dnl distributed under the License is distributed on an "AS IS" BASIS,
-dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-dnl See the License for the specific language governing permissions and
-dnl limitations under the License.
-
-dnl
-dnl find_apr.m4 : locate the APR include files and libraries
-dnl
-dnl This macro file can be used by applications to find and use the APR
-dnl library. It provides a standardized mechanism for using APR. It supports
-dnl embedding APR into the application source, or locating an installed
-dnl copy of APR.
-dnl
-dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors,
-dnl              detailed-check)
-dnl
-dnl   where srcdir is the location of the bundled APR source directory, or
-dnl   empty if source is not bundled.
-dnl
-dnl   where builddir is the location where the bundled APR will will be built,
-dnl   or empty if the build will occur in the srcdir.
-dnl
-dnl   where implicit-install-check set to 1 indicates if there is no
-dnl   --with-apr option specified, we will look for installed copies.
-dnl
-dnl   where acceptable-majors is a space separated list of acceptable major
-dnl   version numbers. Often only a single major version will be acceptable.
-dnl   If multiple versions are specified, and --with-apr=PREFIX or the
-dnl   implicit installed search are used, then the first (leftmost) version
-dnl   in the list that is found will be used.  Currently defaults to [0 1].
-dnl
-dnl   where detailed-check is an M4 macro which sets the apr_acceptable to
-dnl   either "yes" or "no". The macro will be invoked for each installed
-dnl   copy of APR found, with the apr_config variable set appropriately.
-dnl   Only installed copies of APR which are considered acceptable by
-dnl   this macro will be considered found. If no installed copies are
-dnl   considered acceptable by this macro, apr_found will be set to either
-dnl   either "no" or "reconfig".
-dnl
-dnl Sets the following variables on exit:
-dnl
-dnl   apr_found : "yes", "no", "reconfig"
-dnl
-dnl   apr_config : If the apr-config tool exists, this refers to it. If
-dnl                apr_found is "reconfig", then the bundled directory
-dnl                should be reconfigured *before* using apr_config.
-dnl
-dnl Note: this macro file assumes that apr-config has been installed; it
-dnl       is normally considered a required part of an APR installation.
-dnl
-dnl If a bundled source directory is available and needs to be (re)configured,
-dnl then apr_found is set to "reconfig". The caller should reconfigure the
-dnl (passed-in) source directory, placing the result in the build directory,
-dnl as appropriate.
-dnl
-dnl If apr_found is "yes" or "reconfig", then the caller should use the
-dnl value of apr_config to fetch any necessary build/link information.
-dnl
-
-AC_DEFUN([APR_FIND_APR], [
-  apr_found="no"
-
-  if test "$target_os" = "os2-emx"; then
-    # Scripts don't pass test -x on OS/2
-    TEST_X="test -f"
-  else
-    TEST_X="test -x"
-  fi
-
-  ifelse([$4], [], [
-         ifdef(AC_WARNING,AC_WARNING([$0: missing argument 4 (acceptable-majors): Defaulting to APR 0.x then APR 1.x]))
-         acceptable_majors="0 1"],
-         [acceptable_majors="$4"])
-
-  apr_temp_acceptable_apr_config=""
-  for apr_temp_major in $acceptable_majors
-  do
-    case $apr_temp_major in
-      0)
-      apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-config"
-      ;;
-      *)
-      apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-$apr_temp_major-config"
-      ;;
-    esac
-  done
-
-  AC_MSG_CHECKING(for APR)
-  AC_ARG_WITH(apr,
-  [  --with-apr=PATH         prefix for installed APR or the full path to 
-                             apr-config],
-  [
-    if test "$withval" = "no" || test "$withval" = "yes"; then
-      AC_MSG_ERROR([--with-apr requires a directory or file to be provided])
-    fi
-
-    for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
-    do
-      for lookdir in "$withval/bin" "$withval"
-      do
-        if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then
-          apr_config="$lookdir/$apr_temp_apr_config_file"
-          ifelse([$5], [], [], [
-          apr_acceptable="yes"
-          $5
-          if test "$apr_acceptable" != "yes"; then
-            AC_MSG_WARN([Found APR in $apr_config, but we think it is considered unacceptable])
-            continue
-          fi])
-          apr_found="yes"
-          break 2
-        fi
-      done
-    done
-
-    if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then
-      apr_config="$withval"
-      ifelse([$5], [], [apr_found="yes"], [
-          apr_acceptable="yes"
-          $5
-          if test "$apr_acceptable" = "yes"; then
-                apr_found="yes"
-          fi])
-    fi
-
-    dnl if --with-apr is used, it is a fatal error for its argument
-    dnl to be invalid
-    if test "$apr_found" != "yes"; then
-      AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.])
-    fi
-  ],[
-    dnl If we allow installed copies, check those before using bundled copy.
-    if test -n "$3" && test "$3" = "1"; then
-      for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
-      do
-        if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then
-          apr_config="$apr_temp_apr_config_file"
-          ifelse([$5], [], [], [
-          apr_acceptable="yes"
-          $5
-          if test "$apr_acceptable" != "yes"; then
-            AC_MSG_WARN([skipped APR at $apr_config, version not acceptable])
-            continue
-          fi])
-          apr_found="yes"
-          break
-        else
-          dnl look in some standard places
-          for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do
-            if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then
-              apr_config="$lookdir/bin/$apr_temp_apr_config_file"
-              ifelse([$5], [], [], [
-              apr_acceptable="yes"
-              $5
-              if test "$apr_acceptable" != "yes"; then
-                AC_MSG_WARN([skipped APR at $apr_config, version not acceptable])
-                continue
-              fi])
-              apr_found="yes"
-              break 2
-            fi
-          done
-        fi
-      done
-    fi
-    dnl if we have not found anything yet and have bundled source, use that
-    if test "$apr_found" = "no" && test -d "$1"; then
-      apr_temp_abs_srcdir="`cd $1 && pwd`"
-      apr_found="reconfig"
-      apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apr_version.h\"`"
-      case $apr_bundled_major in
-        "")
-          AC_MSG_ERROR([failed to find major version of bundled APR])
-        ;;
-        0)
-          apr_temp_apr_config_file="apr-config"
-        ;;
-        *)
-          apr_temp_apr_config_file="apr-$apr_bundled_major-config"
-        ;;
-      esac
-      if test -n "$2"; then
-        apr_config="$2/$apr_temp_apr_config_file"
-      else
-        apr_config="$1/$apr_temp_apr_config_file"
-      fi
-    fi
-  ])
-
-  AC_MSG_RESULT($apr_found)
-])
diff --git a/src/m4/find_apu.m4 b/src/m4/find_apu.m4
deleted file mode 100644
index 6654162..0000000
--- a/src/m4/find_apu.m4
+++ /dev/null
@@ -1,211 +0,0 @@
-dnl -------------------------------------------------------- -*- autoconf -*-
-dnl Copyright 2002-2005 The Apache Software Foundation or its licensors, as
-dnl applicable.
-dnl
-dnl Licensed under the Apache License, Version 2.0 (the "License");
-dnl you may not use this file except in compliance with the License.
-dnl You may obtain a copy of the License at
-dnl
-dnl     http://www.apache.org/licenses/LICENSE-2.0
-dnl
-dnl Unless required by applicable law or agreed to in writing, software
-dnl distributed under the License is distributed on an "AS IS" BASIS,
-dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-dnl See the License for the specific language governing permissions and
-dnl limitations under the License.
-
-dnl
-dnl find_apu.m4 : locate the APR-util (APU) include files and libraries
-dnl
-dnl This macro file can be used by applications to find and use the APU
-dnl library. It provides a standardized mechanism for using APU. It supports
-dnl embedding APU into the application source, or locating an installed
-dnl copy of APU.
-dnl
-dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors,
-dnl              detailed-check)
-dnl
-dnl   where srcdir is the location of the bundled APU source directory, or
-dnl   empty if source is not bundled.
-dnl
-dnl   where builddir is the location where the bundled APU will be built,
-dnl   or empty if the build will occur in the srcdir.
-dnl
-dnl   where implicit-install-check set to 1 indicates if there is no
-dnl   --with-apr-util option specified, we will look for installed copies.
-dnl
-dnl   where acceptable-majors is a space separated list of acceptable major
-dnl   version numbers. Often only a single major version will be acceptable.
-dnl   If multiple versions are specified, and --with-apr-util=PREFIX or the
-dnl   implicit installed search are used, then the first (leftmost) version
-dnl   in the list that is found will be used.  Currently defaults to [0 1].
-dnl
-dnl   where detailed-check is an M4 macro which sets the apu_acceptable to
-dnl   either "yes" or "no". The macro will be invoked for each installed
-dnl   copy of APU found, with the apu_config variable set appropriately.
-dnl   Only installed copies of APU which are considered acceptable by
-dnl   this macro will be considered found. If no installed copies are
-dnl   considered acceptable by this macro, apu_found will be set to either
-dnl   either "no" or "reconfig".
-dnl
-dnl Sets the following variables on exit:
-dnl
-dnl   apu_found : "yes", "no", "reconfig"
-dnl
-dnl   apu_config : If the apu-config tool exists, this refers to it.  If
-dnl                apu_found is "reconfig", then the bundled directory
-dnl                should be reconfigured *before* using apu_config.
-dnl
-dnl Note: this macro file assumes that apr-config has been installed; it
-dnl       is normally considered a required part of an APR installation.
-dnl
-dnl Note: At this time, we cannot find *both* a source dir and a build dir.
-dnl       If both are available, the build directory should be passed to
-dnl       the --with-apr-util switch.
-dnl
-dnl Note: the installation layout is presumed to follow the standard
-dnl       PREFIX/lib and PREFIX/include pattern. If the APU config file
-dnl       is available (and can be found), then non-standard layouts are
-dnl       possible, since it will be described in the config file.
-dnl
-dnl If a bundled source directory is available and needs to be (re)configured,
-dnl then apu_found is set to "reconfig". The caller should reconfigure the
-dnl (passed-in) source directory, placing the result in the build directory,
-dnl as appropriate.
-dnl
-dnl If apu_found is "yes" or "reconfig", then the caller should use the
-dnl value of apu_config to fetch any necessary build/link information.
-dnl
-
-AC_DEFUN([APR_FIND_APU], [
-  apu_found="no"
-
-  if test "$target_os" = "os2-emx"; then
-    # Scripts don't pass test -x on OS/2
-    TEST_X="test -f"
-  else
-    TEST_X="test -x"
-  fi
-
-  ifelse([$4], [],
-  [
-    ifdef(AC_WARNING,([$0: missing argument 4 (acceptable-majors): Defaulting to APU 0.x then APU 1.x]))
-    acceptable_majors="0 1"
-  ], [acceptable_majors="$4"])
-
-  apu_temp_acceptable_apu_config=""
-  for apu_temp_major in $acceptable_majors
-  do
-    case $apu_temp_major in
-      0)
-      apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-config"
-      ;;
-      *)
-      apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-$apu_temp_major-config"
-      ;;
-    esac
-  done
-
-  AC_MSG_CHECKING(for APR-util)
-  AC_ARG_WITH(apr-util,
-  [  --with-apr-util=PATH    prefix for installed APU or the full path to 
-                             apu-config],
-  [
-    if test "$withval" = "no" || test "$withval" = "yes"; then
-      AC_MSG_ERROR([--with-apr-util requires a directory or file to be provided])
-    fi
-
-    for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
-    do
-      for lookdir in "$withval/bin" "$withval"
-      do
-        if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then
-          apu_config="$lookdir/$apu_temp_apu_config_file"
-          ifelse([$5], [], [], [
-          apu_acceptable="yes"
-          $5
-          if test "$apu_acceptable" != "yes"; then
-            AC_MSG_WARN([Found APU in $apu_config, but it is considered unacceptable])
-            continue
-          fi])
-          apu_found="yes"
-          break 2
-        fi
-      done
-    done
-
-    if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then
-      apu_config="$withval"
-      ifelse([$5], [], [apu_found="yes"], [
-          apu_acceptable="yes"
-          $5
-          if test "$apu_acceptable" = "yes"; then
-                apu_found="yes"
-          fi])
-    fi
-
-    dnl if --with-apr-util is used, it is a fatal error for its argument
-    dnl to be invalid
-    if test "$apu_found" != "yes"; then
-      AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.])
-    fi
-  ],[
-    if test -n "$3" && test "$3" = "1"; then
-      for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
-      do
-        if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then
-          apu_config="$apu_temp_apu_config_file" 
-          ifelse([$5], [], [], [
-          apu_acceptable="yes"
-          $5
-          if test "$apu_acceptable" != "yes"; then
-            AC_MSG_WARN([skipped APR-util at $apu_config, version not acceptable])
-            continue
-          fi])
-          apu_found="yes"
-          break
-        else
-          dnl look in some standard places (apparently not in builtin/default)
-          for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do
-            if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then
-              apu_config="$lookdir/bin/$apu_temp_apu_config_file"
-              ifelse([$5], [], [], [
-              apu_acceptable="yes"
-              $5
-              if test "$apu_acceptable" != "yes"; then
-                AC_MSG_WARN([skipped APR-util at $apu_config, version not acceptable])
-                continue
-              fi])
-              apu_found="yes"
-              break 2
-            fi
-          done
-        fi
-      done
-    fi
-    dnl if we have not found anything yet and have bundled source, use that
-    if test "$apu_found" = "no" && test -d "$1"; then
-      apu_temp_abs_srcdir="`cd $1 && pwd`"
-      apu_found="reconfig"
-      apu_bundled_major="`sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apu_version.h\"`"
-      case $apu_bundled_major in
-        "")
-          AC_MSG_ERROR([failed to find major version of bundled APU])
-        ;;
-        0)
-          apu_temp_apu_config_file="apu-config"
-        ;;
-        *)
-          apu_temp_apu_config_file="apu-$apu_bundled_major-config"
-        ;;
-      esac
-      if test -n "$2"; then
-        apu_config="$2/$apu_temp_apu_config_file"
-      else
-        apu_config="$1/$apu_temp_apu_config_file"
-      fi
-    fi
-  ])
-
-  AC_MSG_RESULT($apu_found)
-])
diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt
index 80dd6d8..692ed2f 100644
--- a/src/main/CMakeLists.txt
+++ b/src/main/CMakeLists.txt
@@ -1,5 +1,6 @@
 add_subdirectory(include)
 add_subdirectory(cpp)
+add_subdirectory(cpp-qt)
 add_subdirectory(resources)
 
 # setup include directories 
@@ -8,3 +9,9 @@
   $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
 )
+
+if(LOG4CXX_QT_SUPPORT)
+    target_include_directories(log4cxx-qt PUBLIC
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    )
+endif(LOG4CXX_QT_SUPPORT)
diff --git a/src/main/Makefile.am b/src/main/Makefile.am
deleted file mode 100644
index 67714c0..0000000
--- a/src/main/Makefile.am
+++ /dev/null
@@ -1,16 +0,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.
-#
-SUBDIRS = cpp include
diff --git a/src/main/cpp-qt/CMakeLists.txt b/src/main/cpp-qt/CMakeLists.txt
new file mode 100644
index 0000000..5384b5b
--- /dev/null
+++ b/src/main/cpp-qt/CMakeLists.txt
@@ -0,0 +1,24 @@
+option(LOG4CXX_QT_SUPPORT "Qt support/integration" OFF)
+
+# Log4cxx Qt support, if enabled
+if(LOG4CXX_QT_SUPPORT)
+    find_package(Qt5 COMPONENTS Core REQUIRED)
+
+    add_library(log4cxx-qt)
+    if(BUILD_SHARED_LIBS)
+	target_compile_definitions(log4cxx-qt PRIVATE LOG4CXX)
+    else()
+	target_compile_definitions(log4cxx-qt PUBLIC LOG4CXX_STATIC)
+    endif()
+    add_dependencies(log4cxx-qt configure_log4cxx)
+    target_compile_definitions(log4cxx-qt PRIVATE "QT_NO_KEYWORDS")
+    target_link_libraries(log4cxx-qt Qt5::Core)
+    target_sources(log4cxx-qt
+      PRIVATE
+      messagehandler.cpp
+    )
+    set_target_properties(log4cxx-qt PROPERTIES
+      VERSION ${LIBLOG4CXX_LIB_VERSION}
+      SOVERSION ${LIBLOG4CXX_LIB_SOVERSION}
+    )
+endif( LOG4CXX_QT_SUPPORT)
diff --git a/src/main/cpp-qt/messagehandler.cpp b/src/main/cpp-qt/messagehandler.cpp
new file mode 100644
index 0000000..4946602
--- /dev/null
+++ b/src/main/cpp-qt/messagehandler.cpp
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+#include <log4cxx-qt/messagehandler.h>
+#include <log4cxx/logger.h>
+#include <log4cxx/spi/location/locationinfo.h>
+
+namespace log4cxx {
+namespace qt {
+
+void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message )
+{
+	log4cxx::LoggerPtr qtLogger = log4cxx::Logger::getLogger( context.category );
+	log4cxx::spi::LocationInfo location( context.file, context.function, context.line );
+
+	switch ( type )
+	{
+		case QtMsgType::QtDebugMsg:
+			qtLogger->debug( message.toStdString(), location );
+			break;
+
+		case QtMsgType::QtWarningMsg:
+			qtLogger->warn( message.toStdString(), location );
+			break;
+#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
+
+		case QtMsgType::QtInfoMsg:
+			qtLogger->info( message.toStdString(), location );
+			break;
+#endif
+
+		case QtMsgType::QtCriticalMsg:
+			qtLogger->error( message.toStdString(), location );
+			break;
+
+		case QtMsgType::QtFatalMsg:
+			qtLogger->fatal( message.toStdString(), location );
+			std::abort();
+	}
+}
+
+} /* namespace qt */
+} /* namespace log4cxx */
diff --git a/src/main/cpp/CMakeLists.txt b/src/main/cpp/CMakeLists.txt
index 892ae65..7c518e3 100644
--- a/src/main/cpp/CMakeLists.txt
+++ b/src/main/cpp/CMakeLists.txt
@@ -3,7 +3,7 @@
 option(LOG4CXX_BLOCKING_ASYNC_APPENDER "Async appender behaviour" ON)
 
 # Build the log4cxx library
-add_library(log4cxx action.cpp)
+add_library(log4cxx)
 if(BUILD_SHARED_LIBS)
     target_compile_definitions(log4cxx PRIVATE LOG4CXX)
 else()
@@ -12,6 +12,7 @@
 add_dependencies(log4cxx configure_log4cxx)
 target_sources(log4cxx
   PRIVATE
+  action.cpp
   andfilter.cpp
   appenderattachableimpl.cpp
   appenderskeleton.cpp
diff --git a/src/main/cpp/Makefile.am b/src/main/cpp/Makefile.am
deleted file mode 100644
index 3643623..0000000
--- a/src/main/cpp/Makefile.am
+++ /dev/null
@@ -1,180 +0,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.
-#
-lib_LTLIBRARIES = liblog4cxx.la
-
-AM_CPPFLAGS = -I$(top_srcdir)/src/main/include -I$(top_builddir)/src/main/include
-
-liblog4cxx_la_SOURCES = \
-        action.cpp \
-        andfilter.cpp \
-        appenderattachableimpl.cpp \
-        appenderskeleton.cpp \
-        aprinitializer.cpp \
-        basicconfigurator.cpp \
-        bufferedwriter.cpp \
-        bytearrayinputstream.cpp \
-        bytearrayoutputstream.cpp \
-        bytebuffer.cpp \
-        cacheddateformat.cpp \
-        charsetdecoder.cpp \
-        charsetencoder.cpp \
-        class.cpp \
-        classnamepatternconverter.cpp \
-        classregistration.cpp \
-        condition.cpp \
-        configurator.cpp \
-        consoleappender.cpp \
-        cyclicbuffer.cpp \
-        dailyrollingfileappender.cpp \
-        datagrampacket.cpp \
-        datagramsocket.cpp \
-        date.cpp \
-        dateformat.cpp \
-        datelayout.cpp \
-        datepatternconverter.cpp \
-        defaultloggerfactory.cpp \
-        defaultconfigurator.cpp \
-        defaultrepositoryselector.cpp \
-        domconfigurator.cpp \
-        exception.cpp \
-        fallbackerrorhandler.cpp \
-        file.cpp \
-        fileappender.cpp \
-        filedatepatternconverter.cpp \
-        fileinputstream.cpp \
-        filelocationpatternconverter.cpp \
-        fileoutputstream.cpp \
-        filerenameaction.cpp \
-        filewatchdog.cpp \
-        filter.cpp \
-        filterbasedtriggeringpolicy.cpp \
-        fixedwindowrollingpolicy.cpp \
-        formattinginfo.cpp \
-        fulllocationpatternconverter.cpp \
-        gzcompressaction.cpp \
-        hierarchy.cpp \
-        htmllayout.cpp \
-        inetaddress.cpp \
-        inputstream.cpp \
-        inputstreamreader.cpp \
-        integer.cpp \
-        integerpatternconverter.cpp \
-        jsonlayout.cpp \
-        layout.cpp\
-        level.cpp \
-        levelmatchfilter.cpp \
-        levelrangefilter.cpp \
-        levelpatternconverter.cpp \
-        linelocationpatternconverter.cpp \
-        lineseparatorpatternconverter.cpp \
-        literalpatternconverter.cpp \
-        loggermatchfilter.cpp \
-        loggerpatternconverter.cpp \
-        loggingeventpatternconverter.cpp \
-        loader.cpp\
-        locale.cpp\
-        locationinfo.cpp\
-        logger.cpp \
-        loggingevent.cpp \
-        loglog.cpp \
-        logmanager.cpp \
-        logstream.cpp \
-        manualtriggeringpolicy.cpp \
-        mapfilter.cpp \
-        messagebuffer.cpp \
-        messagepatternconverter.cpp \
-        methodlocationpatternconverter.cpp \
-        mdc.cpp \
-        mutex.cpp \
-        nameabbreviator.cpp \
-        namepatternconverter.cpp \
-        ndcpatternconverter.cpp \
-        ndc.cpp \
-        nteventlogappender.cpp \
-        objectimpl.cpp \
-        objectptr.cpp \
-        objectoutputstream.cpp \
-        obsoleterollingfileappender.cpp \
-        odbcappender.cpp \
-        onlyonceerrorhandler.cpp \
-        optionconverter.cpp \
-        outputdebugstringappender.cpp \
-        outputstream.cpp \
-        outputstreamwriter.cpp \
-        patternconverter.cpp \
-        patternlayout.cpp \
-        patternparser.cpp \
-        pool.cpp \
-        properties.cpp \
-        propertiespatternconverter.cpp \
-        propertyconfigurator.cpp \
-        propertyresourcebundle.cpp \
-        propertysetter.cpp \
-        reader.cpp \
-        relativetimedateformat.cpp \
-        relativetimepatternconverter.cpp \
-        resourcebundle.cpp \
-        rollingfileappender.cpp \
-        rollingpolicy.cpp \
-        rollingpolicybase.cpp \
-        rolloverdescription.cpp \
-        rootlogger.cpp \
-        serversocket.cpp \
-        simpledateformat.cpp \
-        simplelayout.cpp \
-        sizebasedtriggeringpolicy.cpp \
-        smtpappender.cpp \
-        socket.cpp \
-        socketappender.cpp \
-        socketappenderskeleton.cpp \
-        sockethubappender.cpp \
-        socketoutputstream.cpp \
-        strftimedateformat.cpp \
-        stringhelper.cpp \
-        stringmatchfilter.cpp \
-        stringtokenizer.cpp \
-        synchronized.cpp \
-        syslogappender.cpp \
-        syslogwriter.cpp \
-        system.cpp \
-        systemerrwriter.cpp \
-        systemoutwriter.cpp \
-        telnetappender.cpp \
-        threadcxx.cpp \
-        threadlocal.cpp \
-        threadspecificdata.cpp \
-        threadpatternconverter.cpp \
-        throwableinformationpatternconverter.cpp \
-        timezone.cpp \
-        timebasedrollingpolicy.cpp \
-        transform.cpp \
-        triggeringpolicy.cpp \
-        transcoder.cpp \
-        ttcclayout.cpp \
-        writer.cpp \
-        writerappender.cpp \
-        xmllayout.cpp\
-        xmlsocketappender.cpp \
-        zipcompressaction.cpp
-
-if NON_BLOCKING
-liblog4cxx_la_SOURCES += asyncappender_nonblocking.cpp
-else
-liblog4cxx_la_SOURCES += asyncappender.cpp
-endif
-
-AM_CPPFLAGS += @CPPFLAGS_ODBC@
-liblog4cxx_la_LDFLAGS = -version-info @LT_VERSION@ @LIBS_ODBC@ -@APR_LIBS@
diff --git a/src/main/cpp/syslogappender.cpp b/src/main/cpp/syslogappender.cpp
index f330e44..18e6478 100644
--- a/src/main/cpp/syslogappender.cpp
+++ b/src/main/cpp/syslogappender.cpp
@@ -22,10 +22,12 @@
 #include <log4cxx/spi/loggingevent.h>
 #include <log4cxx/level.h>
 #include <log4cxx/helpers/transcoder.h>
+#include <log4cxx/helpers/optionconverter.h>
 #if !defined(LOG4CXX)
 	#define LOG4CXX 1
 #endif
 #include <log4cxx/private/log4cxx_private.h>
+#include <apr_strings.h>
 
 #if LOG4CXX_HAVE_SYSLOG
 	#include <syslog.h>
@@ -64,7 +66,7 @@
 IMPLEMENT_LOG4CXX_OBJECT(SyslogAppender)
 
 SyslogAppender::SyslogAppender()
-	: syslogFacility(LOG_USER), facilityPrinting(false), sw(0)
+	: syslogFacility(LOG_USER), facilityPrinting(false), sw(0), maxMessageLength(1024)
 {
 	this->initSyslogFacilityStr();
 
@@ -72,7 +74,7 @@
 
 SyslogAppender::SyslogAppender(const LayoutPtr& layout1,
 	int syslogFacility1)
-	: syslogFacility(syslogFacility1), facilityPrinting(false), sw(0)
+	: syslogFacility(syslogFacility1), facilityPrinting(false), sw(0), maxMessageLength(1024)
 {
 	this->layout = layout1;
 	this->initSyslogFacilityStr();
@@ -80,7 +82,7 @@
 
 SyslogAppender::SyslogAppender(const LayoutPtr& layout1,
 	const LogString& syslogHost1, int syslogFacility1)
-	: syslogFacility(syslogFacility1), facilityPrinting(false), sw(0)
+	: syslogFacility(syslogFacility1), facilityPrinting(false), sw(0), maxMessageLength(1024)
 {
 	this->layout = layout1;
 	this->initSyslogFacilityStr();
@@ -306,20 +308,55 @@
 	}
 
 	LogString msg;
+	std::string encoded;
 	layout->format(msg, event, p);
 
+	Transcoder::encode(msg, encoded);
+
+	// Split up the message if it is over maxMessageLength in size.
+	// According to RFC 3164, the max message length is 1024, however
+	// newer systems(such as syslog-ng) can go up to 8k in size for their
+	// messages.  We will append (x/y) at the end of each message
+	// to indicate how far through the message we are
+	std::vector<LogString> packets;
+	if( msg.size() > maxMessageLength ){
+		LogString::iterator start = msg.begin();
+		while( start != msg.end() ){
+			LogString::iterator end = start + maxMessageLength - 12;
+			if( end > msg.end() ){
+				end = msg.end();
+			}
+			LogString newMsg = LogString( start, end );
+			packets.push_back( newMsg );
+			start = end;
+		}
+
+		int current = 1;
+		for( std::vector<LogString>::iterator it = packets.begin();
+			 it != packets.end();
+			 it++, current++ ){
+			char buf[12];
+			apr_snprintf( buf, sizeof(buf), "(%d/%d)", current, packets.size() );
+			LOG4CXX_DECODE_CHAR(str, buf);
+			it->append( str );
+		}
+	}else{
+		packets.push_back( msg );
+	}
+
 	// On the local host, we can directly use the system function 'syslog'
 	// if it is available
 #if LOG4CXX_HAVE_SYSLOG
 
 	if (sw == 0)
 	{
-		std::string sbuf;
-		Transcoder::encode(msg, sbuf);
-
-		// use of "%s" to avoid a security hole
-		::syslog(syslogFacility | event->getLevel()->getSyslogEquivalent(),
-			"%s", sbuf.c_str());
+		for( std::vector<LogString>::iterator it = packets.begin();
+			 it != packets.end();
+			 it++ ){
+			// use of "%s" to avoid a security hole
+			::syslog(syslogFacility | event->getLevel()->getSyslogEquivalent(),
+				"%s", it->c_str());
+		}
 
 		return;
 	}
@@ -334,17 +371,21 @@
 		return;
 	}
 
-	LogString sbuf(1, 0x3C /* '<' */);
-	StringHelper::toString((syslogFacility | event->getLevel()->getSyslogEquivalent()), p, sbuf);
-	sbuf.append(1, (logchar) 0x3E /* '>' */);
+	for( std::vector<LogString>::iterator it = packets.begin();
+		 it != packets.end();
+		 it++ ){
+		LogString sbuf(1, 0x3C /* '<' */);
+		StringHelper::toString((syslogFacility | event->getLevel()->getSyslogEquivalent()), p, sbuf);
+		sbuf.append(1, (logchar) 0x3E /* '>' */);
 
-	if (facilityPrinting)
-	{
-		sbuf.append(facilityStr);
+		if (facilityPrinting)
+		{
+			sbuf.append(facilityStr);
+		}
+
+		sbuf.append(*it);
+		sw->write(sbuf);
 	}
-
-	sbuf.append(msg);
-	sw->write(sbuf);
 }
 
 void SyslogAppender::activateOptions(Pool&)
@@ -361,6 +402,10 @@
 	{
 		setFacility(value);
 	}
+	else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR("MAXMESSAGELENGTH"), LOG4CXX_STR("maxmessagelength")))
+	{
+		setMaxMessageLength(OptionConverter::toInt(value, 1024));
+	}
 	else
 	{
 		AppenderSkeleton::setOption(option, value);
diff --git a/src/main/include/Makefile.am b/src/main/include/Makefile.am
deleted file mode 100644
index 072c7bb..0000000
--- a/src/main/include/Makefile.am
+++ /dev/null
@@ -1,16 +0,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.
-#
-SUBDIRS = log4cxx
diff --git a/src/main/include/log4cxx-qt/messagehandler.h b/src/main/include/log4cxx-qt/messagehandler.h
new file mode 100644
index 0000000..252bac8
--- /dev/null
+++ b/src/main/include/log4cxx-qt/messagehandler.h
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+#ifndef LOG4CXX_QT_MESSAGEHANDLER_H
+#define LOG4CXX_QT_MESSAGEHANDLER_H
+
+#include <QString>
+
+namespace log4cxx
+{
+namespace qt
+{
+
+/**
+ * The messageHandler function is a log4cxx replacement of the standard
+ * Qt message handler.
+ *
+ * Use this function as follows:
+ *   qInstallMessageHandler( log4cxx::qt::messageHandler );
+ *
+ * Note that similar to Qt, upon receipt of a fatal message this calls
+ * std::abort().
+ */
+void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message);
+
+} /* namespace qt */
+} /* namespace log4cxx */
+
+#endif /* LOG4CXX_QT_MESSAGEHANDLER_H */
diff --git a/src/main/include/log4cxx/Makefile.am b/src/main/include/log4cxx/Makefile.am
deleted file mode 100644
index f629b45..0000000
--- a/src/main/include/log4cxx/Makefile.am
+++ /dev/null
@@ -1,57 +0,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.
-#
-SUBDIRS = helpers net nt rolling spi varia xml config db private pattern filter
-log4cxxincdir = $(includedir)/log4cxx
-DISTCLEANFILES = log4cxx.h
-EXTRA_DIST = log4cxx.hw
-
-# Importantly, $(top_srcdir)/src/main/include/log4cxx/log4cxx.h
-# does NOT appear in the following list so the built version is preferred.
-# This subtly is important for properly handling VPATH vs non-VPATH builds.
-log4cxxinc_HEADERS  = $(top_builddir)/src/main/include/log4cxx/log4cxx.h
-log4cxxinc_HEADERS += \
-    $(top_srcdir)/src/main/include/log4cxx/appender.h \
-    $(top_srcdir)/src/main/include/log4cxx/appenderskeleton.h \
-    $(top_srcdir)/src/main/include/log4cxx/asyncappender.h \
-    $(top_srcdir)/src/main/include/log4cxx/basicconfigurator.h \
-    $(top_srcdir)/src/main/include/log4cxx/consoleappender.h \
-    $(top_srcdir)/src/main/include/log4cxx/dailyrollingfileappender.h \
-    $(top_srcdir)/src/main/include/log4cxx/defaultconfigurator.h \
-    $(top_srcdir)/src/main/include/log4cxx/defaultloggerfactory.h \
-    $(top_srcdir)/src/main/include/log4cxx/fileappender.h \
-    $(top_srcdir)/src/main/include/log4cxx/file.h \
-    $(top_srcdir)/src/main/include/log4cxx/hierarchy.h \
-    $(top_srcdir)/src/main/include/log4cxx/htmllayout.h \
-    $(top_srcdir)/src/main/include/log4cxx/jsonlayout.h \
-    $(top_srcdir)/src/main/include/log4cxx/layout.h \
-    $(top_srcdir)/src/main/include/log4cxx/level.h \
-    $(top_srcdir)/src/main/include/log4cxx/logger.h \
-    $(top_srcdir)/src/main/include/log4cxx/logmanager.h \
-    $(top_srcdir)/src/main/include/log4cxx/logstring.h \
-    $(top_srcdir)/src/main/include/log4cxx/mdc.h \
-    $(top_srcdir)/src/main/include/log4cxx/ndc.h \
-    $(top_srcdir)/src/main/include/log4cxx/patternlayout.h \
-    $(top_srcdir)/src/main/include/log4cxx/portability.h \
-    $(top_srcdir)/src/main/include/log4cxx/propertyconfigurator.h \
-    $(top_srcdir)/src/main/include/log4cxx/provisionnode.h \
-    $(top_srcdir)/src/main/include/log4cxx/rollingfileappender.h \
-    $(top_srcdir)/src/main/include/log4cxx/simplelayout.h \
-    $(top_srcdir)/src/main/include/log4cxx/stream.h \
-    $(top_srcdir)/src/main/include/log4cxx/ttcclayout.h \
-    $(top_srcdir)/src/main/include/log4cxx/writerappender.h
-
-dist-hook:
-	-rm -f $(distdir)/log4cxx.h
diff --git a/src/main/include/log4cxx/config/Makefile.am b/src/main/include/log4cxx/config/Makefile.am
deleted file mode 100644
index df86ce1..0000000
--- a/src/main/include/log4cxx/config/Makefile.am
+++ /dev/null
@@ -1,18 +0,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.
-#
-configincdir = $(includedir)/log4cxx/config
-configinc_HEADERS= \
-    propertysetter.h
diff --git a/src/main/include/log4cxx/db/Makefile.am b/src/main/include/log4cxx/db/Makefile.am
deleted file mode 100644
index 6f295d7..0000000
--- a/src/main/include/log4cxx/db/Makefile.am
+++ /dev/null
@@ -1,18 +0,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.
-#
-dbincdir = $(includedir)/log4cxx/db
-dbinc_HEADERS= \
-    odbcappender.h
diff --git a/src/main/include/log4cxx/filter/Makefile.am b/src/main/include/log4cxx/filter/Makefile.am
deleted file mode 100644
index df0c3be..0000000
--- a/src/main/include/log4cxx/filter/Makefile.am
+++ /dev/null
@@ -1,27 +0,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.
-#
-filterincdir = $(includedir)/log4cxx/filter
-filterinc_HEADERS= \
-    andfilter.h \
-    denyallfilter.h \
-    expressionfilter.h \
-    levelmatchfilter.h \
-    levelrangefilter.h \
-    locationinfofilter.h \
-    loggermatchfilter.h \
-    mapfilter.h \
-    propertyfilter.h \
-    stringmatchfilter.h
diff --git a/src/main/include/log4cxx/helpers/Makefile.am b/src/main/include/log4cxx/helpers/Makefile.am
deleted file mode 100644
index 3d88825..0000000
--- a/src/main/include/log4cxx/helpers/Makefile.am
+++ /dev/null
@@ -1,88 +0,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.
-#
-helpersincdir = $(includedir)/log4cxx/helpers
-helpersinc_HEADERS= \
-    absolutetimedateformat.h \
-    appenderattachableimpl.h \
-    aprinitializer.h \
-    bufferedoutputstream.h \
-    bufferedwriter.h \
-    bytearrayinputstream.h \
-    bytearrayoutputstream.h \
-    bytebuffer.h \
-    cacheddateformat.h \
-    charsetdecoder.h \
-    charsetencoder.h \
-    class.h \
-    classregistration.h \
-    condition.h \
-    cyclicbuffer.h \
-    datagrampacket.h \
-    datagramsocket.h \
-    dateformat.h \
-    date.h \
-    datelayout.h \
-    datetimedateformat.h \
-    exception.h \
-    fileinputstream.h \
-    fileoutputstream.h \
-    filewatchdog.h \
-    inetaddress.h \
-    inputstream.h \
-    inputstreamreader.h \
-    integer.h \
-    iso8601dateformat.h \
-    loader.h \
-    locale.h \
-    loglog.h \
-    messagebuffer.h \
-    mutex.h \
-    object.h \
-    objectimpl.h \
-    objectoutputstream.h \
-    objectptr.h \
-    onlyonceerrorhandler.h \
-    optionconverter.h \
-    outputstream.h \
-    outputstreamwriter.h \
-    pool.h \
-    properties.h \
-    propertyresourcebundle.h \
-    reader.h \
-    relativetimedateformat.h \
-    resourcebundle.h \
-    serversocket.h \
-    simpledateformat.h \
-    socket.h \
-    socketoutputstream.h \
-    strftimedateformat.h \
-    strictmath.h \
-    stringhelper.h \
-    stringtokenizer.h \
-    synchronized.h \
-    syslogwriter.h \
-    systemerrwriter.h \
-    system.h \
-    systemoutwriter.h \
-    tchar.h \
-    thread.h \
-    threadlocal.h \
-    threadspecificdata.h \
-    timezone.h \
-    transcoder.h \
-    transform.h \
-    writer.h \
-    xml.h
diff --git a/src/main/include/log4cxx/net/Makefile.am b/src/main/include/log4cxx/net/Makefile.am
deleted file mode 100644
index 7fbb21f..0000000
--- a/src/main/include/log4cxx/net/Makefile.am
+++ /dev/null
@@ -1,24 +0,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.
-#
-netincdir = $(includedir)/log4cxx/net
-netinc_HEADERS= \
-    smtpappender.h \
-    socketappender.h \
-    socketappenderskeleton.h \
-    sockethubappender.h \
-    syslogappender.h \
-    telnetappender.h \
-    xmlsocketappender.h
diff --git a/src/main/include/log4cxx/net/syslogappender.h b/src/main/include/log4cxx/net/syslogappender.h
index 5acf92c..689fd2c 100644
--- a/src/main/include/log4cxx/net/syslogappender.h
+++ b/src/main/include/log4cxx/net/syslogappender.h
@@ -30,7 +30,19 @@
 {
 namespace net
 {
-/** Use SyslogAppender to send log messages to a remote syslog daemon.*/
+/**
+ * Use SyslogAppender to send log messages to a remote syslog daemon.
+ *
+ * Note that by default, this appender will split up messages that are
+ * more than 1024 bytes long, for compatability with BSD syslog(see
+ * RFC 3164).  Modern syslog implementations(e.g. syslog-ng) can accept
+ * messages much larger, and may have a default of 8k.  You may modify
+ * the default size of the messages by setting the MaxMessageLength option.
+ *
+ * When the message is too large for the current MaxMessageLength,
+ * the packet number and total # will be appended to the end of the
+ * message like this: (5/10)
+ */
 class LOG4CXX_EXPORT SyslogAppender : public AppenderSkeleton
 {
 	public:
@@ -136,6 +148,16 @@
 			return facilityPrinting;
 		}
 
+		inline void setMaxMessageLength(int maxMessageLength1)
+		{
+			maxMessageLength = maxMessageLength1;
+		}
+
+		inline int getMaxMessageLength() const
+		{
+			return maxMessageLength;
+		}
+
 	protected:
 		void initSyslogFacilityStr();
 
@@ -145,6 +167,7 @@
 		helpers::SyslogWriter* sw;
 		LogString syslogHost;
 		int syslogHostPort;
+		int maxMessageLength;
 	private:
 		SyslogAppender(const SyslogAppender&);
 		SyslogAppender& operator=(const SyslogAppender&);
diff --git a/src/main/include/log4cxx/nt/Makefile.am b/src/main/include/log4cxx/nt/Makefile.am
deleted file mode 100644
index 5214143..0000000
--- a/src/main/include/log4cxx/nt/Makefile.am
+++ /dev/null
@@ -1,19 +0,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.
-#
-ntincdir = $(includedir)/log4cxx/nt
-ntinc_HEADERS= \
-    nteventlogappender.h \
-    outputdebugstringappender.h
diff --git a/src/main/include/log4cxx/pattern/Makefile.am b/src/main/include/log4cxx/pattern/Makefile.am
deleted file mode 100644
index 57d42e9..0000000
--- a/src/main/include/log4cxx/pattern/Makefile.am
+++ /dev/null
@@ -1,41 +0,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.
-#
-patternincdir = $(includedir)/log4cxx/pattern
-patterninc_HEADERS= \
-    classnamepatternconverter.h \
-    datepatternconverter.h \
-    filedatepatternconverter.h \
-    filelocationpatternconverter.h \
-    formattinginfo.h \
-    fulllocationpatternconverter.h \
-    integerpatternconverter.h \
-    levelpatternconverter.h \
-    linelocationpatternconverter.h \
-    lineseparatorpatternconverter.h \
-    literalpatternconverter.h \
-    loggerpatternconverter.h \
-    loggingeventpatternconverter.h \
-    messagepatternconverter.h \
-    methodlocationpatternconverter.h \
-    nameabbreviator.h \
-    namepatternconverter.h \
-    ndcpatternconverter.h \
-    patternconverter.h \
-    patternparser.h \
-    propertiespatternconverter.h \
-    relativetimepatternconverter.h \
-    threadpatternconverter.h \
-    throwableinformationpatternconverter.h
diff --git a/src/main/include/log4cxx/private/Makefile.am b/src/main/include/log4cxx/private/Makefile.am
deleted file mode 100644
index 82ff880..0000000
--- a/src/main/include/log4cxx/private/Makefile.am
+++ /dev/null
@@ -1,18 +0,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.
-#
-privateincdir = $(includedir)/log4cxx/private
-privateinc_HEADERS = log4cxx_private.h
-EXTRA_DIST = log4cxx_private.hw
diff --git a/src/main/include/log4cxx/rolling/Makefile.am b/src/main/include/log4cxx/rolling/Makefile.am
deleted file mode 100644
index 5bca754..0000000
--- a/src/main/include/log4cxx/rolling/Makefile.am
+++ /dev/null
@@ -1,32 +0,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.
-#
-rollingincdir = $(includedir)/log4cxx/rolling
-rollinginc_HEADERS= \
-    action.h \
-    filerenameaction.h \
-    filterbasedtriggeringpolicy.h \
-    fixedwindowrollingpolicy.h \
-    gzcompressaction.h \
-    manualtriggeringpolicy.h \
-    rollingfileappender.h \
-    rollingfileappenderskeleton.h \
-    rollingpolicybase.h \
-    rollingpolicy.h \
-    rolloverdescription.h \
-    sizebasedtriggeringpolicy.h \
-    timebasedrollingpolicy.h \
-    triggeringpolicy.h \
-    zipcompressaction.h
diff --git a/src/main/include/log4cxx/spi/Makefile.am b/src/main/include/log4cxx/spi/Makefile.am
deleted file mode 100644
index 2c1336c..0000000
--- a/src/main/include/log4cxx/spi/Makefile.am
+++ /dev/null
@@ -1,31 +0,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.
-#
-SUBDIRS = location
-spiincdir = $(includedir)/log4cxx/spi
-spiinc_HEADERS= \
-    appenderattachable.h \
-    configurator.h \
-    defaultrepositoryselector.h \
-    errorhandler.h \
-    filter.h \
-    hierarchyeventlistener.h \
-    loggerfactory.h \
-    loggerrepository.h \
-    loggingevent.h \
-    optionhandler.h \
-    repositoryselector.h \
-    rootlogger.h \
-    triggeringeventevaluator.h
diff --git a/src/main/include/log4cxx/spi/location/Makefile.am b/src/main/include/log4cxx/spi/location/Makefile.am
deleted file mode 100644
index f7da589..0000000
--- a/src/main/include/log4cxx/spi/location/Makefile.am
+++ /dev/null
@@ -1,18 +0,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.
-#
-spiincdir = $(includedir)/log4cxx/spi/location
-spiinc_HEADERS= \
-    locationinfo.h
diff --git a/src/main/include/log4cxx/varia/Makefile.am b/src/main/include/log4cxx/varia/Makefile.am
deleted file mode 100644
index 85ff262..0000000
--- a/src/main/include/log4cxx/varia/Makefile.am
+++ /dev/null
@@ -1,18 +0,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.
-#
-variaincdir = $(includedir)/log4cxx/varia
-variainc_HEADERS= \
-    fallbackerrorhandler.h
diff --git a/src/main/include/log4cxx/xml/Makefile.am b/src/main/include/log4cxx/xml/Makefile.am
deleted file mode 100644
index eeebb42..0000000
--- a/src/main/include/log4cxx/xml/Makefile.am
+++ /dev/null
@@ -1,19 +0,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.
-#
-xmlincdir = $(includedir)/log4cxx/xml
-xmlinc_HEADERS= \
-    domconfigurator.h \
-    xmllayout.h
diff --git a/src/main/resources/CMakeLists.txt b/src/main/resources/CMakeLists.txt
index 3827357..b60f192 100644
--- a/src/main/resources/CMakeLists.txt
+++ b/src/main/resources/CMakeLists.txt
@@ -2,6 +2,6 @@
 if(WIN32)
 target_sources(log4cxx
   PRIVATE
-  log4cxx.rc
+  ../resources/log4cxx.rc
 )
-endif()
\ No newline at end of file
+endif()
diff --git a/src/site/CMakeLists.txt b/src/site/CMakeLists.txt
new file mode 100644
index 0000000..d83949e
--- /dev/null
+++ b/src/site/CMakeLists.txt
@@ -0,0 +1,15 @@
+option(BUILD_SITE "Build log4cxx website" OFF)
+if(BUILD_SITE)
+    find_package( Doxygen REQUIRED dot )
+    configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/doxy/Doxyfile.in
+	            ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile )
+
+    configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/markdown/download.md.in
+	            ${CMAKE_CURRENT_BINARY_DIR}/markdown/download.md )
+
+    add_custom_target( doc_doxygen ALL
+	COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+	WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+	COMMENT "Generate site with Doxygen"
+	VERBATIM )
+endif()
diff --git a/src/site/Makefile.am b/src/site/Makefile.am
deleted file mode 100644
index d48a135..0000000
--- a/src/site/Makefile.am
+++ /dev/null
@@ -1,16 +0,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.
-#
-SUBDIRS = doxy
diff --git a/src/site/apt/Makefile.am b/src/site/apt/Makefile.am
deleted file mode 100644
index 8e6be87..0000000
--- a/src/site/apt/Makefile.am
+++ /dev/null
@@ -1,15 +0,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.
-#
diff --git a/src/site/apt/building/cmake.apt b/src/site/apt/building/cmake.apt
deleted file mode 100644
index 9bfb794..0000000
--- a/src/site/apt/building/cmake.apt
+++ /dev/null
@@ -1,147 +0,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.
- ------
- Building Apache log4cxx with CMake
- ------
- ------
- ------
-
-Building Apache log4cxx with CMake
-
-* Quick start:
-
-  Building and testing log4cxx on a Unix platform with packaged APR and APR-Util.
-
-  Make sure cmake 3.13+, g++ and make are available, install or
-  build apr 1.x, apr-util 1.x, gzip and zip.
-
-+------------+
-$ apt-get install build-essential libapr1-dev libaprutil1-dev gzip zip
-$ cd apache-log4cxx-x.x.x
-$ mkdir build
-$ cd build
-$ ccmake ..
-$ make
-$ sudo make install
-+------------+
-
-* ccmake options
-
-*------------------------+---------------------------------------------------------------------------------------------+
-| -DLOG4CXX_WCHAR_T=no   | Enable wchar_t API methods, choice of yes (default), no.                                    |
-*------------------------+---------------------------------------------------------------------------------------------+
-| -DLOG4CXX_UNICHAR=yes  | Enable UniChar API methods, choice of yes, no (default).                                    |
-*------------------------+---------------------------------------------------------------------------------------------+
-| -DLOG4CXX_CFSTRING=yes | Enable CFString API methods, requires Mac OS/X CoreFoundation, choice of yes, no (default). |
-*------------------------+---------------------------------------------------------------------------------------------+
-| -DBUILD_TESTING=off    | Do not build tests.  Tests are built by default                                             |
-*------------------------+---------------------------------------------------------------------------------------------+
-| -DBUILD_SHARED_LIBS=off| Build log4cxx as a static library. A dynamically linked log4cxx library is built by default.|
-|                        | Any compilation unit that includes a log4cxx header must define LOG4CXX_STATIC.             |
-*------------------------+---------------------------------------------------------------------------------------------+
-| -DAPU_STATIC=yes       | Link to the APR-Util static library. By default, the log4cxx shared library is linked to the|
-|                        | APR-Util shared library. If BUILD_SHARED_LIBS=off, the static APR-Util library is used.     |
-*------------------------+---------------------------------------------------------------------------------------------+
-| -DAPR_STATIC=yes       | Link to the APR static library. By default, the log4cxx shared library is linked to the     |
-|                        | APR shared library. If BUILD_SHARED_LIBS=off, the static APR library is always used.        |
-*------------------------+---------------------------------------------------------------------------------------------+
-|-DLOG4CXX_TEST_PROGRAM_PATH=path| An extra path to prepend to the PATH for test programs.  Log4cxx requires zip,      |
-|                        | sed, and grep on the PATH in order for the tests to work properly.                          |
-*------------------------+---------------------------------------------------------------------------------------------+
-
-  Building and testing log4cxx on a Microsoft Windows with APR, Expat and APR-Util built from source
-  extracted into apr-1.7.0, libexpat(from github) and apr-util-1.6.1 in %HOMEPATH%\Libraries.
-
-+------------+
-$ cd %HOMEPATH%\Libraries
-$ cmake -S libexpat\expat -B buildtrees\expat -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
-$ cmake --build buildtrees\expat --target install --config Release
-$ cmake -S apr-1.7.0 -B buildtrees\apr -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
-$ cmake --build buildtrees\apr --target install --config Release
-$ set CMAKE_PREFIX_PATH=%HOMEPATH%\Libraries\installed
-$ cmake -S apr-util-1.6.1 -B buildtrees\apr-util -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
-$ cmake --build buildtrees\apr-util --target install --config Release
-$ cmake -S apache-log4cxx-x.x.x -B buildtrees\log4cxx -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
-$ cmake --build buildtrees\log4cxx --target install --config Release
-+------------+
-
-* Platform specific notes:
-
-** Mac OS/X:
-
-  APR and APR-Util are provided by the platform in Mac OS/X 10.5 and iODBC in 10.4.
-
-  cmake can be installed by typing "brew install cmake".
-
-** Debian:
-
-  APR, APR-Util, openssl, gzip and zip may be installed by:
-
-+----+
-$ sudo apt-get install libssl-dev libapr1-dev libaprutil1-dev gzip zip
-+----+
-
-  CMake can be built from source by typing:
-
-+----+
-$ wget https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4.tar.gz
-$ tar xf cmake-3.16.4.tar.gz
-$ cd cmake-3.16.4
-$ ./bootstrap
-$ make
-$ sudo make install
-+----+
-
-** FreeBSD:
-
-  APR, APR-Util, gzip and zip may be installed from the ports collection by:
-
-+----+
-$ cd /usr/ports/archivers/zip
-$ make
-$ make install
-$ cd /usr/ports/archivers/gzip
-$ make
-$ make install
-$ cd /usr/ports/devel/apr
-$ make
-$ make install
-+----+
-
-** Windows:
-
-The easiest way to get dependencies installed is to use vcpkg(for APR/expat), and msys2 for the command-line
-utilities(zip, grep, sed).
-
-Msys2 can be downloaded from: https://www.msys2.org/
-By default, this will be installed under C:\msys2, so you can add that to the build PATH by setting
-LOG4CXX_TEST_PROGRAM_PATH=C:/msys64/usr/bin in your build settings.
-
-For vcpkg, follow the directions at https://github.com/microsoft/vcpkg#quick-start-windows and then install
-the dependencies needed using `vcpkg install apr apr-util`.
-
-* Using log4cxx in a CMake build
-
-  A log4cxxConfig.cmake and log4cxxConfigVersion.cmake is installed to allow use of find_package()
-  in your CMakeLists.txt.
-
-  Below are example cmake commands that compile and link "myApplication" with log4cxx.
-
-+----+
-find_package(log4cxx 0.11)
-add_executable(myApplication myMain.cpp)
-target_include_directories(myApplication PRIVATE $<TARGET_PROPERTY:log4cxx,INTERFACE_INCLUDE_DIRECTORIES>)
-target_link_libraries( myApplication PRIVATE log4cxx)
-+----+
diff --git a/src/site/apt/building/vcpkg.apt b/src/site/apt/building/vcpkg.apt
deleted file mode 100644
index 4c3bdec..0000000
--- a/src/site/apt/building/vcpkg.apt
+++ /dev/null
@@ -1,43 +0,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.
- ------
- Building Apache log4cxx with vcpkg
- ------
- ------
- ------
-
-Building Apache log4cxx with vcpkg
-
-*Preparation
-
-+----+
-   > git clone https://github.com/Microsoft/vcpkg.git
-   > cd vcpkg
-
-   PS> .\bootstrap-vcpkg.bat
-   Linux:~/$ ./bootstrap-vcpkg.sh
-
-   Then, to hook up user-wide integration, run (note: requires admin on first use)
-
-   PS> .\vcpkg integrate install
-   Linux:~/$ ./vcpkg integrate install
-+----+
-
-*Building log4cxx.dll
-
-+----+
-   PS> .\vcpkg install log4cxx
-   Linux:~/$ ./vcpkg install log4cxx
-+----+
diff --git a/src/site/apt/community/issue-tracking.apt b/src/site/apt/community/issue-tracking.apt
deleted file mode 100644
index 745923b..0000000
--- a/src/site/apt/community/issue-tracking.apt
+++ /dev/null
@@ -1,48 +0,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.

- ------

-Issue Tracking

- ------

- ------

- ------

-

-Overview

-

-	This project uses {{{https://www.atlassian.com/software/jira}JIRA}}, a J2EE-based issue tracking

-	and project management application.

-

-Issue Tracking

-

-	<<Bugs>> and <<feature requests>> should be submitted to the following issue tracking system

-	for this project.

-

-	{{{https://issues.apache.org/jira/browse/LOGCXX}https://issues.apache.org/jira/browse/LOGCXX}}

-

-	<<Please don't just open bugs only because things don't work for you>>, some issues simply

-	don't are bugs in the code base of the project or it's build tools, but may have a lot of

-	different other reasons. If things don't work for you and you need some help, please subscribe

-	to the {{{https://logging.apache.org/log4cxx/mail-lists.html}users mailing list}} and describe

-	the issue you have, the more detailed the better. The mailing list is a far better place to

-	discuss things than JIRA, besides that there are more users than developers of the project and

-	issues created in JIRA are only forwarded to the latter. There's always the chance to create an

-	issue in JIRA later, hopefully with a specific explanation of the problem and even a solution

-	already.

-

-	As a rule of thumb, if you already digged through the code and found a problem in it or its

-	build tools, feel free to directly create a bug in {{{https://issues.apache.org/jira/browse/LOGCXX}JIRA}}.

-	But if things really only don't work and you don't have any clue why, please use the {{{https://logging.apache.org/log4cxx/mail-lists.html}users mailing listt}}

-	instead.

-

-	Thanks!
\ No newline at end of file
diff --git a/src/site/apt/download.apt.vm b/src/site/apt/download.apt.vm
deleted file mode 100644
index 6b6bdeb..0000000
--- a/src/site/apt/download.apt.vm
+++ /dev/null
@@ -1,58 +0,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.
- ------
-Download Apache log4cxx ${releaseVersion}
- ------
- ------
- ------
-
-Download Apache log4cxx ${releaseVersion}
-
-  Apache log4cxx ${releaseVersion} is distributed under the {{{https://www.apache.org/licenses/LICENSE-2.0.html} Apache License, version 2.0}}.
-
-  The link in the Mirrors column should display a list of available mirrors with a
-  default selection based on your inferred location.  If you do not see that page,
-  try a different browser.  The checksum and signature are links to
-  the originals on the main distribution server.
-
-*-------------------------+---------+----------+-----------+
-|                         | Mirrors | Checksum | Signature |
-*-------------------------+---------+----------+-----------+
-| Apache log4cxx ${releaseVersion} (tar.gz)      | {{{https://www.apache.org/dyn/closer.cgi/logging/log4cxx/${releaseVersion}/${releaseArtifactId}-${releaseVersion}.tar.gz} ${releaseArtifactId}-${releaseVersion}.tar.gz}} | {{{https://www.apache.org/dist/logging/log4cxx/${releaseVersion}/${releaseArtifactId}-${releaseVersion}.tar.gz.sha512} ${releaseArtifactId}-${releaseVersion}.tar.gz.sha512}} | {{{https://www.apache.org/dist/logging/log4cxx/${releaseVersion}/${releaseArtifactId}-${releaseVersion}.tar.gz.asc} ${releaseArtifactId}-${releaseVersion}.tar.gz.asc}} |
-*-------------------------+---------+----------+-----------+
-| Apache log4cxx ${releaseVersion} (zip)      | {{{https://www.apache.org/dyn/closer.cgi/logging/log4cxx/${releaseVersion}/${releaseArtifactId}-${releaseVersion}.zip} ${releaseArtifactId}-${releaseVersion}.zip}} | {{{https://www.apache.org/dist/logging/log4cxx/${releaseVersion}/${releaseArtifactId}-${releaseVersion}.zip.sha512} ${releaseArtifactId}-${releaseVersion}.zip.sha512}} | {{{https://www.apache.org/dist/logging/log4cxx/${releaseVersion}/${releaseArtifactId}-${releaseVersion}.zip.asc} ${releaseArtifactId}-${releaseVersion}.zip.asc}} |
-*-------------------------+---------+----------+-----------+
-
-    It is essential that you verify the integrity of the downloaded files using the PGP or SHA512 signatures.
-    Please read {{{https://httpd.apache.org/dev/verification.html}Verifying Apache HTTP Server Releases}} for more
-    information on why you should verify our releases.
-
-    The PGP signatures can be verified using PGP or GPG. First download the {{{https://www.apache.org/dist/logging/KEYS}KEYS}}
-    as well as the asc signature file for the relevant distribution. Make sure you get these files from the
-    {{{https://www.apache.org/dist/logging/}main distribution directory}}, rather than from a mirror. Then verify the signatures using:
-
----
-% gpg --import KEYS
-% gpg --verify ${releaseArtifactId}-${releaseVersion}.tar.gz.asc ${releaseArtifactId}-${releaseVersion}.tar.gz
----
-
-        * ${releaseArtifactId}-${releaseVersion} is signed by ${releaseManager} (${releaseKey})
-
-    Alternatively, you can verify the SHA512 signature on the files. A unix program called sha512 or sha512sum is included
-    in many unix distributions.
-
-* Previous Releases
-
-  All previous releases of Apache log4cxx can be found in the {{{https://archive.apache.org/dist/logging/log4cxx}archive repository}}.
diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt
deleted file mode 100644
index 4eb49dd..0000000
--- a/src/site/apt/index.apt
+++ /dev/null
@@ -1,45 +0,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.
- ------
-Short introduction to Apache log4cxx
- ------
- ------
- ------
-
-Short introduction to Apache log4cxx
-
-	Apache log4cxx is a logging framework for C++ patterned after
-	{{{https://logging.apache.org/log4j}Apache log4j}}, which uses
-	{{{https://apr.apache.org}Apache Portable Runtime}} for most platform-specific code and should
-	be usable on any platform supported by APR. Apache log4cxx is licensed under the
-	{{{https://www.apache.org/licenses}Apache License}}, an open source license certified by the
-	{{{https://www.opensource.org}Open Source Initiative}}.
-
-	Almost every large application includes its own logging or tracing API. Inserting log
-	statements into code is a low-tech method for debugging it. It may also be the only way because
-	debuggers are not always available or applicable. This is usually the case for multithreaded
-	applications and distributed applications at large.
-
-	Experience indicates that logging is an important component of the development cycle. It offers
-	several advantages. It provides precise context about a run of the application. Once inserted
-	into the code, the generation of logging output requires no human intervention. Moreover, log
-	output can be saved in persistent medium to be studied at a later time. In addition to its use
-	in the development cycle, a sufficiently rich logging package can also be viewed as an auditing
-	tool.
-
-	Logging does have its drawbacks. It can slow down an application. If too verbose, it can cause
-	scrolling blindness. To alleviate these concerns, log4cxx is designed to be reliable, fast and
-	extensible. Since logging is rarely the main focus of an application, the log4cxx API strives
-	to be simple to understand and to use.
diff --git a/src/site/doxy/Doxyfile.in b/src/site/doxy/Doxyfile.in
index 37c21f4..989a935 100644
--- a/src/site/doxy/Doxyfile.in
+++ b/src/site/doxy/Doxyfile.in
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-# Doxyfile 1.8.6
+# Doxyfile 1.8.13
 
 # This file describes the settings to be used by the documentation system
 # doxygen (www.doxygen.org) for a project.
@@ -53,7 +53,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "Version @version@"
+PROJECT_NUMBER         = "Version ${LOG4CXX_RELEASE_VERSION}"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
@@ -61,10 +61,10 @@
 
 PROJECT_BRIEF          =
 
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+# in the documentation. The maximum height of the logo should not exceed 55
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+# the logo to the output directory.
 
 PROJECT_LOGO           =
 
@@ -73,9 +73,9 @@
 # entered, it will be relative to the location where doxygen was started. If
 # left blank the current directory will be used.
 
-OUTPUT_DIRECTORY       = .
+OUTPUT_DIRECTORY       =
 
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
 # directories (in 2 levels) under the output directory of each output format and
 # will distribute the generated files over these directories. Enabling this
 # option can be useful when feeding doxygen a huge amount of source files, where
@@ -85,6 +85,14 @@
 
 CREATE_SUBDIRS         = NO
 
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES    = NO
+
 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
 # documentation generated by doxygen is written. Doxygen will use this
 # information to generate all constant output in the proper language.
@@ -100,14 +108,14 @@
 
 OUTPUT_LANGUAGE        = English
 
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
 # descriptions after the members that are listed in the file and class
 # documentation (similar to Javadoc). Set to NO to disable this.
 # The default value is: YES.
 
 BRIEF_MEMBER_DESC      = YES
 
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
 # description of a member or function before the detailed description
 #
 # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
@@ -125,7 +133,17 @@
 # the entity):The $name class, The $name widget, The $name file, is, provides,
 # specifies, contains, represents, a, an and the.
 
-ABBREVIATE_BRIEF       =
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
 
 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
 # doxygen will generate a detailed section even if there is only a brief
@@ -142,7 +160,7 @@
 
 INLINE_INHERITED_MEMB  = NO
 
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
 # before files name in the file list and in the header files. If set to NO the
 # shortest path that makes the file name unique will be used
 # The default value is: YES.
@@ -212,9 +230,9 @@
 
 INHERIT_DOCS           = YES
 
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+# page for each member. If set to NO, the documentation of a member will be part
+# of the file/class/namespace that contains it.
 # The default value is: NO.
 
 SEPARATE_MEMBER_PAGES  = NO
@@ -276,11 +294,14 @@
 # extension. Doxygen has a built-in mapping, but you can override or extend it
 # using this tag. The format is ext=language, where ext is a file extension, and
 # language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
 #
-# Note For files without extension you can use no_extension as a placeholder.
+# Note: For files without extension you can use no_extension as a placeholder.
 #
 # Note that for custom extensions you also need to set FILE_PATTERNS otherwise
 # the files are not read by doxygen.
@@ -297,10 +318,19 @@
 
 MARKDOWN_SUPPORT       = YES
 
+# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
+# to that level are automatically included in the table of contents, even if
+# they do not have an id attribute.
+# Note: This feature currently applies only to Markdown headings.
+# Minimum value: 0, maximum value: 99, default value: 0.
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
+TOC_INCLUDE_HEADINGS   = 0
+
 # When enabled doxygen tries to link words that correspond to documented
 # classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
+# be prevented in individual cases by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
 # The default value is: YES.
 
 AUTOLINK_SUPPORT       = YES
@@ -313,7 +343,7 @@
 # diagrams that involve STL classes more complete and accurate.
 # The default value is: NO.
 
-BUILTIN_STL_SUPPORT    = YES
+BUILTIN_STL_SUPPORT    = NO
 
 # If you use Microsoft's C++/CLI language, you should set this option to YES to
 # enable parsing support.
@@ -340,13 +370,20 @@
 IDL_PROPERTY_SUPPORT   = YES
 
 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
+# tag is set to YES then doxygen will reuse the documentation of the first
 # member in the group (if any) for the other members of the group. By default
 # all members of a group must be documented explicitly.
 # The default value is: NO.
 
 DISTRIBUTE_GROUP_DOC   = NO
 
+# If one adds a struct or class to a group and this option is enabled, then also
+# any nested class or struct is added to the same group. By default this option
+# is disabled and one has to add nested compounds explicitly via \ingroup.
+# The default value is: NO.
+
+GROUP_NESTED_COMPOUNDS = NO
+
 # Set the SUBGROUPING tag to YES to allow class member groups of the same type
 # (for instance a group of public functions) to be put as a subgroup of that
 # type (e.g. under the Public Functions section). Set it to NO to prevent
@@ -405,7 +442,7 @@
 # Build related configuration options
 #---------------------------------------------------------------------------
 
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
 # documentation are documented, even if no documentation was available. Private
 # class members and static file members will be hidden unless the
 # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
@@ -413,37 +450,37 @@
 # normally produced when WARNINGS is set to YES.
 # The default value is: NO.
 
-EXTRACT_ALL            = YES
+EXTRACT_ALL            = NO
 
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
 # be included in the documentation.
 # The default value is: NO.
 
 EXTRACT_PRIVATE        = NO
 
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
 # scope will be included in the documentation.
 # The default value is: NO.
 
 EXTRACT_PACKAGE        = NO
 
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
 # included in the documentation.
 # The default value is: NO.
 
-EXTRACT_STATIC         = YES
+EXTRACT_STATIC         = NO
 
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO,
 # only classes defined in header files are included. Does not have any effect
 # for Java sources.
 # The default value is: YES.
 
-EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_CLASSES  = YES
 
-# This flag is only useful for Objective-C code. When set to YES local methods,
+# This flag is only useful for Objective-C code. If set to YES, local methods,
 # which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
+# included in the documentation. If set to NO, only methods in the interface are
 # included.
 # The default value is: NO.
 
@@ -468,21 +505,21 @@
 
 # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
 # undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
+# to NO, these classes will be included in the various overviews. This option
+# has no effect if EXTRACT_ALL is enabled.
 # The default value is: NO.
 
 HIDE_UNDOC_CLASSES     = NO
 
 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
+# (class|struct|union) declarations. If set to NO, these declarations will be
 # included in the documentation.
 # The default value is: NO.
 
 HIDE_FRIEND_COMPOUNDS  = NO
 
 # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
+# documentation blocks found inside the body of a function. If set to NO, these
 # blocks will be appended to the function's detailed documentation block.
 # The default value is: NO.
 
@@ -496,26 +533,33 @@
 INTERNAL_DOCS          = NO
 
 # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
+# names in lower-case letters. If set to YES, upper-case letters are also
 # allowed. This is useful if you have classes or files whose names only differ
 # in case and if your file system supports case sensitive file names. Windows
 # and Mac users are advised to set this option to NO.
 # The default value is: system dependent.
 
-CASE_SENSE_NAMES       = NO
+CASE_SENSE_NAMES       = YES
 
 # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
+# their full class and namespace scopes in the documentation. If set to YES, the
 # scope will be hidden.
 # The default value is: NO.
 
-HIDE_SCOPE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+# append additional text to a page's title, such as Class Reference. If set to
+# YES the compound reference will be hidden.
+# The default value is: NO.
+
+HIDE_COMPOUND_REFERENCE= NO
 
 # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
 # the files that are included by a file in the documentation of that file.
 # The default value is: YES.
 
-SHOW_INCLUDE_FILES     = NO
+SHOW_INCLUDE_FILES     = YES
 
 # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
 # grouped member an include statement to the documentation, telling the reader
@@ -538,14 +582,14 @@
 
 # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
 # (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
+# name. If set to NO, the members will appear in declaration order.
 # The default value is: YES.
 
 SORT_MEMBER_DOCS       = YES
 
 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
 # descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order. Note that
+# name. If set to NO, the members will appear in declaration order. Note that
 # this will also influence the order of the classes in the class list.
 # The default value is: NO.
 
@@ -590,32 +634,30 @@
 
 STRICT_PROTO_MATCHING  = NO
 
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+# list. This list is created by putting \todo commands in the documentation.
 # The default value is: YES.
 
 GENERATE_TODOLIST      = YES
 
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+# list. This list is created by putting \test commands in the documentation.
 # The default value is: YES.
 
 GENERATE_TESTLIST      = YES
 
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
 # list. This list is created by putting \bug commands in the documentation.
 # The default value is: YES.
 
 GENERATE_BUGLIST       = YES
 
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
 # the deprecated list. This list is created by putting \deprecated commands in
 # the documentation.
 # The default value is: YES.
 
-GENERATE_DEPRECATEDLIST= NO
+GENERATE_DEPRECATEDLIST= YES
 
 # The ENABLED_SECTIONS tag can be used to enable conditional documentation
 # sections, marked by \if <section_label> ... \endif and \cond <section_label>
@@ -635,8 +677,8 @@
 MAX_INITIALIZER_LINES  = 30
 
 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
+# the bottom of the documentation of classes and structs. If set to YES, the
+# list will mention the files that were used to generate the documentation.
 # The default value is: YES.
 
 SHOW_USED_FILES        = YES
@@ -676,7 +718,7 @@
 # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
 # tag is left empty.
 
-LAYOUT_FILE            =
+LAYOUT_FILE            = ${CMAKE_SOURCE_DIR}/src/site/doxy/DoxygenLayout.xml
 
 # The CITE_BIB_FILES tag can be used to specify one or more bib files containing
 # the reference definitions. This must be a list of .bib files. The .bib
@@ -684,8 +726,7 @@
 # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
 # For LaTeX the style of the bibliography can be controlled using
 # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
+# search path. See also \cite for info how to create references.
 
 CITE_BIB_FILES         =
 
@@ -701,7 +742,7 @@
 QUIET                  = NO
 
 # The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
 # this implies that the warnings are on.
 #
 # Tip: Turn warnings on while writing the documentation.
@@ -709,12 +750,12 @@
 
 WARNINGS               = YES
 
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
 # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
 # will automatically be disabled.
 # The default value is: YES.
 
-WARN_IF_UNDOCUMENTED   = NO
+WARN_IF_UNDOCUMENTED   = YES
 
 # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
 # potential errors in the documentation, such as not documenting some parameters
@@ -726,12 +767,18 @@
 
 # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
 # are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
+# value. If set to NO, doxygen will only warn about wrong or incomplete
+# parameter documentation, but not about the absence of documentation.
 # The default value is: NO.
 
 WARN_NO_PARAMDOC       = NO
 
+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
+# a warning is encountered.
+# The default value is: NO.
+
+WARN_AS_ERROR          = NO
+
 # The WARN_FORMAT tag determines the format of the warning messages that doxygen
 # can produce. The string should contain the $file, $line, and $text tags, which
 # will be replaced by the file and line number from which the warning originated
@@ -755,11 +802,12 @@
 # The INPUT tag is used to specify the files and/or directories that contain
 # documented source files. You may enter file names like myfile.cpp or
 # directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = @base_dir@/src/main/include \
-                         @base_dir@/target/mainpage.dox
+INPUT                  = ${CMAKE_SOURCE_DIR}/src/main/include \
+                         ${CMAKE_SOURCE_DIR}/src/site/markdown \
+                         ${CMAKE_BINARY_DIR}/src/site/markdown
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -772,14 +820,62 @@
 
 # If the value of the INPUT tag contains directories, you can use the
 # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
+# *.h) to filter out the source-files in the directories.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# read by doxygen.
+#
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
+# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
 
-FILE_PATTERNS          = *.h
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.idl \
+                         *.ddl \
+                         *.odl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.cs \
+                         *.d \
+                         *.php \
+                         *.php4 \
+                         *.php5 \
+                         *.phtml \
+                         *.inc \
+                         *.m \
+                         *.markdown \
+                         *.md \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.pyw \
+                         *.f90 \
+                         *.f95 \
+                         *.f03 \
+                         *.f08 \
+                         *.f \
+                         *.for \
+                         *.tcl \
+                         *.vhd \
+                         *.vhdl \
+                         *.ucf \
+                         *.qsf
 
 # The RECURSIVE tag can be used to specify whether or not subdirectories should
 # be searched for input files as well.
@@ -834,7 +930,7 @@
 # *.h) to filter out the source-files in the directories. If left blank all
 # files are included.
 
-EXAMPLE_PATTERNS       =
+EXAMPLE_PATTERNS       = *
 
 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
 # searched for input files to be used with the \include or \dontinclude commands
@@ -847,7 +943,7 @@
 # that contain images that are to be included in the documentation (see the
 # \image command).
 
-IMAGE_PATH             =
+IMAGE_PATH             = ${CMAKE_SOURCE_DIR}/src/site/images
 
 # The INPUT_FILTER tag can be used to specify a program that doxygen should
 # invoke to filter for each input file. Doxygen will invoke the filter program
@@ -863,6 +959,10 @@
 # Note that the filter must not add or remove lines; it is applied before the
 # code is scanned, but not when the output code is generated. If lines are added
 # or removed, the anchors will not be placed correctly.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
 
 INPUT_FILTER           =
 
@@ -872,11 +972,15 @@
 # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
 # filters are used. If the FILTER_PATTERNS tag is empty or if none of the
 # patterns match the file name, INPUT_FILTER is applied.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
 
 FILTER_PATTERNS        =
 
 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
+# INPUT_FILTER) will also be used to filter the input files that are used for
 # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
 # The default value is: NO.
 
@@ -895,7 +999,7 @@
 # (index.html). This can be useful if you have a project on for instance GitHub
 # and want to reuse the introduction page also for the doxygen output.
 
-USE_MDFILE_AS_MAINPAGE =
+USE_MDFILE_AS_MAINPAGE = ${CMAKE_SOURCE_DIR}/src/site/markdown/index.md
 
 #---------------------------------------------------------------------------
 # Configuration options related to source browsing
@@ -936,7 +1040,7 @@
 REFERENCES_RELATION    = NO
 
 # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# to YES then the hyperlinks from functions in REFERENCES_RELATION and
 # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
 # link to the documentation.
 # The default value is: YES.
@@ -981,15 +1085,15 @@
 # See also: Section \class.
 # The default value is: YES.
 
-VERBATIM_HEADERS       = NO
+VERBATIM_HEADERS       = YES
 
-# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
+# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
 # cost of reduced performance. This can be particularly helpful with template
 # rich C++ code for which doxygen's built-in parser lacks the necessary type
 # information.
 # Note: The availability of this option depends on whether or not doxygen was
-# compiled with the --with-libclang option.
+# generated with the -Duse-libclang=ON option for CMake.
 # The default value is: NO.
 
 CLANG_ASSISTED_PARSING = NO
@@ -1018,7 +1122,7 @@
 # Minimum value: 1, maximum value: 20, default value: 5.
 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
 
-COLS_IN_ALPHA_INDEX    = 2
+COLS_IN_ALPHA_INDEX    = 5
 
 # In case all classes in a project start with a common prefix, all classes will
 # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
@@ -1032,7 +1136,7 @@
 # Configuration options related to the HTML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
 # The default value is: YES.
 
 GENERATE_HTML          = YES
@@ -1043,7 +1147,7 @@
 # The default directory is: html.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_OUTPUT            = @manual_dest@
+HTML_OUTPUT            = html
 
 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
 # generated HTML page (for example: .htm, .php, .asp).
@@ -1080,7 +1184,7 @@
 # that doxygen normally uses.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_FOOTER            = @base_dir@/src/site/doxy/license_notice_footer.txt
+HTML_FOOTER            = ${CMAKE_SOURCE_DIR}/src/site/doxy/footer.html
 
 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
 # sheet that is used by each HTML page. It can be used to fine-tune the look of
@@ -1094,16 +1198,18 @@
 
 HTML_STYLESHEET        =
 
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# cascading style sheets that are included after the standard style sheets
 # created by doxygen. Using this option one can overrule certain style aspects.
 # This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
+# standard style sheet and is therefore more robust against future updates.
+# Doxygen will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list). For an example see the documentation.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_EXTRA_STYLESHEET  =
+HTML_EXTRA_STYLESHEET  = ${CMAKE_SOURCE_DIR}/src/site/doxy/customdoxygen.css
 
 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
 # other source files which should be copied to the HTML output directory. Note
@@ -1116,7 +1222,7 @@
 HTML_EXTRA_FILES       =
 
 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
+# will adjust the colors in the style sheet and background images according to
 # this color. Hue is specified as an angle on a colorwheel, see
 # http://en.wikipedia.org/wiki/Hue for more information. For instance the value
 # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
@@ -1147,8 +1253,9 @@
 
 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
 # page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
+# to YES can help to show when doxygen was last run and thus if the
+# documentation is up to date.
+# The default value is: NO.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_TIMESTAMP         = NO
@@ -1244,28 +1351,29 @@
 CHM_FILE               =
 
 # The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# including file name) of the HTML help compiler (hhc.exe). If non-empty,
 # doxygen will try to run the HTML help compiler on the generated index.hhp.
 # The file has to be specified with full path.
 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 HHC_LOCATION           =
 
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
+# The GENERATE_CHI flag controls if a separate .chi index file is generated
+# (YES) or that it should be included in the master .chm file (NO).
 # The default value is: NO.
 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 GENERATE_CHI           = NO
 
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
 # and project file content.
 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 CHM_INDEX_ENCODING     =
 
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
+# The BINARY_TOC flag controls whether a binary table of contents is generated
+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
 # The default value is: NO.
 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
@@ -1378,7 +1486,7 @@
 # index structure (just like the one that is generated for HTML Help). For this
 # to work a browser that supports JavaScript, DHTML, CSS and frames is required
 # (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
 # further fine-tune the look of the index. As an example, the default style
 # sheet generated by doxygen has an example that shows how to put an image at
 # the root of the tree instead of the PROJECT_NAME. Since the tree basically has
@@ -1406,7 +1514,7 @@
 
 TREEVIEW_WIDTH         = 250
 
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
 # external symbols imported via tag files in a separate window.
 # The default value is: NO.
 # This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1435,7 +1543,7 @@
 
 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
 # http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
 # installed or if you want to formulas look prettier in the HTML output. When
 # enabled you may also need to install MathJax separately and configure the path
 # to it using the MATHJAX_RELPATH option.
@@ -1505,11 +1613,11 @@
 
 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
 # implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
 # The default value is: NO.
 # This tag requires that the tag SEARCHENGINE is set to YES.
 
@@ -1521,7 +1629,7 @@
 # external search engine pointed to by the SEARCHENGINE_URL option to obtain the
 # search results.
 #
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# Doxygen ships with an example indexer (doxyindexer) and search engine
 # (doxysearch.cgi) which are based on the open source search engine library
 # Xapian (see: http://xapian.org/).
 #
@@ -1534,7 +1642,7 @@
 # The SEARCHENGINE_URL should point to a search engine hosted by a web server
 # which will return the search results when EXTERNAL_SEARCH is enabled.
 #
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# Doxygen ships with an example indexer (doxyindexer) and search engine
 # (doxysearch.cgi) which are based on the open source search engine library
 # Xapian (see: http://xapian.org/). See the section "External Indexing and
 # Searching" for details.
@@ -1572,7 +1680,7 @@
 # Configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
 # The default value is: YES.
 
 GENERATE_LATEX         = NO
@@ -1603,7 +1711,7 @@
 
 MAKEINDEX_CMD_NAME     = makeindex
 
-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
 # documents. This may be useful for small projects and may help to save some
 # trees in general.
 # The default value is: NO.
@@ -1618,12 +1726,15 @@
 # The default value is: a4.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
-PAPER_TYPE             = a4wide
+PAPER_TYPE             = a4
 
 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
+# that should be included in the LaTeX output. The package can be specified just
+# by its name or with the correct syntax as to be used with the LaTeX
+# \usepackage command. To get the times font for instance you can specify :
+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+# To use the option intlimits with the amsmath package you can specify:
+# EXTRA_PACKAGES=[intlimits]{amsmath}
 # If left blank no extra packages will be included.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
@@ -1637,23 +1748,36 @@
 #
 # Note: Only use a user-defined header if you know what you are doing! The
 # following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+# string, for the replacement values of the other commands the user is referred
+# to HTML_HEADER.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_HEADER           =
 
 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
 # generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
+# chapter. If it is left blank doxygen will generate a standard footer. See
+# LATEX_HEADER for more information on how to generate a default footer and what
+# special commands can be used inside the footer.
 #
 # Note: Only use a user-defined footer if you know what you are doing!
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_FOOTER           =
 
+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# LaTeX style sheets that are included after the standard style sheets created
+# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+# will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_STYLESHEET =
+
 # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
 # other source files which should be copied to the LATEX_OUTPUT output
 # directory. Note that the files will be copied as-is; there are no commands or
@@ -1669,15 +1793,15 @@
 # The default value is: YES.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
-PDF_HYPERLINKS         = NO
+PDF_HYPERLINKS         = YES
 
-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES, to get a
 # higher quality PDF documentation.
 # The default value is: YES.
 # This tag requires that the tag GENERATE_LATEX is set to YES.
 
-USE_PDFLATEX           = NO
+USE_PDFLATEX           = YES
 
 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
 # command to the generated LaTeX files. This will instruct LaTeX to keep running
@@ -1713,11 +1837,19 @@
 
 LATEX_BIB_STYLE        = plain
 
+# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_TIMESTAMP        = NO
+
 #---------------------------------------------------------------------------
 # Configuration options related to the RTF output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
 # RTF output is optimized for Word 97 and may not look too pretty with other RTF
 # readers/editors.
 # The default value is: NO.
@@ -1732,7 +1864,7 @@
 
 RTF_OUTPUT             = rtf
 
-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
 # documents. This may be useful for small projects and may help to save some
 # trees in general.
 # The default value is: NO.
@@ -1769,11 +1901,21 @@
 
 RTF_EXTENSIONS_FILE    =
 
+# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+# with syntax highlighting in the RTF output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_SOURCE_CODE        = NO
+
 #---------------------------------------------------------------------------
 # Configuration options related to the man page output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
 # classes and files.
 # The default value is: NO.
 
@@ -1797,6 +1939,13 @@
 
 MAN_EXTENSION          = .3
 
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR             =
+
 # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
 # will generate one additional man file for each entity documented in the real
 # man page(s). These additional files only source the real man page, but without
@@ -1810,7 +1959,7 @@
 # Configuration options related to the XML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
 # captures the structure of the code including all documentation.
 # The default value is: NO.
 
@@ -1824,7 +1973,7 @@
 
 XML_OUTPUT             = xml
 
-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
 # listings (including syntax highlighting and cross-referencing information) to
 # the XML output. Note that enabling this will significantly increase the size
 # of the XML output.
@@ -1837,7 +1986,7 @@
 # Configuration options related to the DOCBOOK output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
 # that can be used to generate PDF.
 # The default value is: NO.
 
@@ -1851,14 +2000,23 @@
 
 DOCBOOK_OUTPUT         = docbook
 
+# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+# program listings (including syntax highlighting and cross-referencing
+# information) to the DOCBOOK output. Note that enabling this will significantly
+# increase the size of the DOCBOOK output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_PROGRAMLISTING = NO
+
 #---------------------------------------------------------------------------
 # Configuration options for the AutoGen Definitions output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
-# Definitions (see http://autogen.sf.net) file that captures the structure of
-# the code including all documentation. Note that this feature is still
-# experimental and incomplete at the moment.
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+# AutoGen Definitions (see http://autogen.sf.net) file that captures the
+# structure of the code including all documentation. Note that this feature is
+# still experimental and incomplete at the moment.
 # The default value is: NO.
 
 GENERATE_AUTOGEN_DEF   = NO
@@ -1867,7 +2025,7 @@
 # Configuration options related to the Perl module output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
 # file that captures the structure of the code including all documentation.
 #
 # Note that this feature is still experimental and incomplete at the moment.
@@ -1875,7 +2033,7 @@
 
 GENERATE_PERLMOD       = NO
 
-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
 # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
 # output from the Perl module output.
 # The default value is: NO.
@@ -1883,9 +2041,9 @@
 
 PERLMOD_LATEX          = NO
 
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
 # formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO the
+# understand what is going on. On the other hand, if this tag is set to NO, the
 # size of the Perl module output will be much smaller and Perl will parse it
 # just the same.
 # The default value is: YES.
@@ -1905,20 +2063,20 @@
 # Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 
-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
 # C-preprocessor directives found in the sources and include files.
 # The default value is: YES.
 
 ENABLE_PREPROCESSING   = YES
 
-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
-# in the source code. If set to NO only conditional compilation will be
+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+# in the source code. If set to NO, only conditional compilation will be
 # performed. Macro expansion can be done in a controlled way by setting
 # EXPAND_ONLY_PREDEF to YES.
 # The default value is: NO.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
-MACRO_EXPANSION        = YES
+MACRO_EXPANSION        = NO
 
 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
 # the macro expansion is limited to the macros specified with the PREDEFINED and
@@ -1928,7 +2086,7 @@
 
 EXPAND_ONLY_PREDEF     = NO
 
-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# If the SEARCH_INCLUDES tag is set to YES, the include files in the
 # INCLUDE_PATH will be searched if a #include is found.
 # The default value is: YES.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
@@ -1972,9 +2130,9 @@
 EXPAND_AS_DEFINED      =
 
 # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
 # removed.
 # The default value is: YES.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
@@ -1994,7 +2152,7 @@
 # where loc1 and loc2 can be relative or absolute paths or URLs. See the
 # section "Linking to external documentation" for more information about the use
 # of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
+# Note: Each tag file must have a unique name (where the name does NOT include
 # the path). If a tag file is not located in the directory in which doxygen is
 # run, you must also specify the path to the tagfile here.
 
@@ -2006,20 +2164,21 @@
 
 GENERATE_TAGFILE       =
 
-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
-# class index. If set to NO only the inherited external classes will be listed.
+# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+# the class index. If set to NO, only the inherited external classes will be
+# listed.
 # The default value is: NO.
 
 ALLEXTERNALS           = NO
 
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
-# the modules index. If set to NO, only the current project's groups will be
+# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will be
 # listed.
 # The default value is: YES.
 
 EXTERNAL_GROUPS        = YES
 
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
 # the related pages index. If set to NO, only the current project's pages will
 # be listed.
 # The default value is: YES.
@@ -2036,7 +2195,7 @@
 # Configuration options related to the dot tool
 #---------------------------------------------------------------------------
 
-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
 # (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
 # NO turns the diagrams off. Note that this option also works with HAVE_DOT
 # disabled, but it is recommended to install and use dot, since it yields more
@@ -2061,7 +2220,7 @@
 
 DIA_PATH               =
 
-# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# If set to YES the inheritance and collaboration graphs will hide inheritance
 # and usage relations if the target is undocumented or is not a class.
 # The default value is: YES.
 
@@ -2072,7 +2231,7 @@
 # http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
 # Bell Labs. The other options in this section have no effect if this option is
 # set to NO
-# The default value is: NO.
+# The default value is: YES.
 
 HAVE_DOT               = NO
 
@@ -2086,7 +2245,7 @@
 
 DOT_NUM_THREADS        = 0
 
-# When you want a differently looking font n the dot files that doxygen
+# When you want a differently looking font in the dot files that doxygen
 # generates you can specify the font name using DOT_FONTNAME. You need to make
 # sure dot is able to find the font, which can be done by putting it in a
 # standard location or by setting the DOTFONTPATH environment variable or by
@@ -2134,7 +2293,7 @@
 
 GROUP_GRAPHS           = YES
 
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
 # collaboration diagrams in a style similar to the OMG's Unified Modeling
 # Language.
 # The default value is: NO.
@@ -2186,7 +2345,8 @@
 #
 # Note that enabling this option will significantly increase the time of a run.
 # So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
+# functions only using the \callgraph command. Disabling a call graph can be
+# accomplished by means of the command \hidecallgraph.
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
@@ -2197,7 +2357,8 @@
 #
 # Note that enabling this option will significantly increase the time of a run.
 # So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
+# functions only using the \callergraph command. Disabling a caller graph can be
+# accomplished by means of the command \hidecallergraph.
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
@@ -2208,7 +2369,7 @@
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-GRAPHICAL_HIERARCHY    = NO
+GRAPHICAL_HIERARCHY    = YES
 
 # If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
 # dependencies a directory has on other directories in a graphical way. The
@@ -2220,11 +2381,17 @@
 DIRECTORY_GRAPH        = YES
 
 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
+# generated by dot. For an explanation of the image formats see the section
+# output formats in the documentation of the dot tool (Graphviz (see:
+# http://www.graphviz.org/)).
 # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
 # to make the SVG files visible in IE 9+ (other browsers do not have this
 # requirement).
-# Possible values are: png, jpg, gif and svg.
+# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
+# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
+# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo,
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+# png:gdiplus:gdiplus.
 # The default value is: png.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
@@ -2267,6 +2434,24 @@
 
 DIAFILE_DIRS           =
 
+# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+# path where java can find the plantuml.jar file. If left blank, it is assumed
+# PlantUML is not used or called during a preprocessing step. Doxygen will
+# generate a warning when it encounters a \startuml command in this case and
+# will not generate output for the diagram.
+
+PLANTUML_JAR_PATH      =
+
+# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
+# configuration file for plantuml.
+
+PLANTUML_CFG_FILE      =
+
+# When using plantuml, the specified paths are searched for files specified by
+# the !include statement in a plantuml block.
+
+PLANTUML_INCLUDE_PATH  =
+
 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
 # that will be shown in the graph. If the number of nodes in a graph becomes
 # larger than this value, doxygen will truncate the graph, which is visualized
@@ -2303,7 +2488,7 @@
 
 DOT_TRANSPARENT        = NO
 
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
 # files in one run (i.e. multiple -o and -T options on the command line). This
 # makes dot run faster, but since only newer versions of dot (>1.8.10) support
 # this, this feature is disabled by default.
@@ -2320,7 +2505,7 @@
 
 GENERATE_LEGEND        = YES
 
-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
 # files that are used to generate the various graphs.
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
diff --git a/src/site/doxy/DoxygenLayout.xml b/src/site/doxy/DoxygenLayout.xml
new file mode 100644
index 0000000..b51cbac
--- /dev/null
+++ b/src/site/doxy/DoxygenLayout.xml
@@ -0,0 +1,197 @@
+<doxygenlayout version="1.0">
+  <!-- Generated by doxygen 1.8.13 -->
+  <!-- Navigation index tabs for HTML output -->
+  <navindex>
+    <tab type="mainpage" visible="yes" title=""/>
+    <tab type="pages" visible="yes" title="" intro=""/>
+    <tab type="modules" visible="yes" title="" intro=""/>
+    <tab type="namespaces" visible="yes" title="">
+      <tab type="namespacelist" visible="yes" title="" intro=""/>
+      <tab type="namespacemembers" visible="yes" title="" intro=""/>
+    </tab>
+    <tab type="classes" visible="yes" title="">
+      <tab type="classlist" visible="yes" title="" intro=""/>
+      <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 
+      <tab type="hierarchy" visible="yes" title="" intro=""/>
+      <tab type="classmembers" visible="yes" title="" intro=""/>
+    </tab>
+    <tab type="files" visible="yes" title="">
+      <tab type="filelist" visible="yes" title="" intro=""/>
+      <tab type="globals" visible="yes" title="" intro=""/>
+    </tab>
+    <tab type="examples" visible="yes" title="" intro=""/>  
+    <tab type="user" url="https://www.apache.org" title="Apache"/>
+    <tab type="user" url="https://logging.apache.org" title="Logging Services"/>
+    <tab type="user" url="https://github.com/apache/logging-log4cxx" title="Github"/>
+  </navindex>
+
+  <!-- Layout definition for a class page -->
+  <class>
+    <briefdescription visible="yes"/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <inheritancegraph visible="$CLASS_GRAPH"/>
+    <collaborationgraph visible="$COLLABORATION_GRAPH"/>
+    <memberdecl>
+      <nestedclasses visible="yes" title=""/>
+      <publictypes title=""/>
+      <services title=""/>
+      <interfaces title=""/>
+      <publicslots title=""/>
+      <signals title=""/>
+      <publicmethods title=""/>
+      <publicstaticmethods title=""/>
+      <publicattributes title=""/>
+      <publicstaticattributes title=""/>
+      <protectedtypes title=""/>
+      <protectedslots title=""/>
+      <protectedmethods title=""/>
+      <protectedstaticmethods title=""/>
+      <protectedattributes title=""/>
+      <protectedstaticattributes title=""/>
+      <packagetypes title=""/>
+      <packagemethods title=""/>
+      <packagestaticmethods title=""/>
+      <packageattributes title=""/>
+      <packagestaticattributes title=""/>
+      <properties title=""/>
+      <events title=""/>
+      <privatetypes title=""/>
+      <privateslots title=""/>
+      <privatemethods title=""/>
+      <privatestaticmethods title=""/>
+      <privateattributes title=""/>
+      <privatestaticattributes title=""/>
+      <friends title=""/>
+      <related title="" subtitle=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <inlineclasses title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <services title=""/>
+      <interfaces title=""/>
+      <constructors title=""/>
+      <functions title=""/>
+      <related title=""/>
+      <variables title=""/>
+      <properties title=""/>
+      <events title=""/>
+    </memberdef>
+    <allmemberslink visible="yes"/>
+    <usedfiles visible="$SHOW_USED_FILES"/>
+    <authorsection visible="yes"/>
+  </class>
+
+  <!-- Layout definition for a namespace page -->
+  <namespace>
+    <briefdescription visible="yes"/>
+    <memberdecl>
+      <nestednamespaces visible="yes" title=""/>
+      <constantgroups visible="yes" title=""/>
+      <classes visible="yes" title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <inlineclasses title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </namespace>
+
+  <!-- Layout definition for a file page -->
+  <file>
+    <briefdescription visible="yes"/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <includegraph visible="$INCLUDE_GRAPH"/>
+    <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
+    <sourcelink visible="yes"/>
+    <memberdecl>
+      <classes visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <constantgroups visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <inlineclasses title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection/>
+  </file>
+
+  <!-- Layout definition for a group page -->
+  <group>
+    <briefdescription visible="yes"/>
+    <groupgraph visible="$GROUP_GRAPHS"/>
+    <memberdecl>
+      <nestedgroups visible="yes" title=""/>
+      <dirs visible="yes" title=""/>
+      <files visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <classes visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <pagedocs/>
+      <inlineclasses title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </group>
+
+  <!-- Layout definition for a directory page -->
+  <directory>
+    <briefdescription visible="yes"/>
+    <directorygraph visible="yes"/>
+    <memberdecl>
+      <dirs visible="yes"/>
+      <files visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+  </directory>
+</doxygenlayout>
diff --git a/src/site/doxy/Makefile.am b/src/site/doxy/Makefile.am
deleted file mode 100644
index 307e53b..0000000
--- a/src/site/doxy/Makefile.am
+++ /dev/null
@@ -1,85 +0,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.
-#
-EXTRA_DIST = Doxyfile license_notice_footer.txt
-
-# DOC is defined if installer requests doc generation.
-
-
-if DOC
-
-htmldest = $(docdir)/html
-
-install-data-hook:
-	$(mkinstalldirs) $(DESTDIR)$(htmldest)
-	cp -pR @manual_dest@/* $(DESTDIR)$(htmldest)
-
-# Automake's "distcheck" is sensitive to having files left over
-# after "make uninstall", so we have to clean up the install hook.
-uninstall-local:
-	rm -rf $(DESTDIR)$(htmldest)
-
-dox: @manual_dest@/index.html
-
-if LATEX_DOC
-
-pdf: @PACKAGE@.pdf
-@PACKAGE@.pdf:
-	$(MAKE) -C ./latex pdf
-	ln -s ./latex/refman.ps	 @PACKAGE@.ps
-	ln -s ./latex/refman.pdf @PACKAGE@.pdf
-
-endif
-
-else
-
-# We repeat the three targets in both the "if" and "else" clauses
-# of the conditional, because the generated makefile will contain
-# references to the targets (target "install" depends on target
-# "install-datahook", for example), and some make programs get upset
-# if no target exists.
-
-install-data-hook:
-uninstall-local:
-dox:
-
-endif
-
-
-all-local: dox
-
-
-@manual_dest@/index.html: Doxyfile
-	"@DOXYGEN@"
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)
-
-# Make tarfile to distribute the HTML documentation.
-doc-dist: dox
-	rm -rf $(distdir)
-	mkdir $(distdir)
-	mkdir $(distdir)/docs
-	mkdir $(distdir)/docs/html
-	cp @manual_dest@/* $(distdir)/docs/html
-	tar -czf $(top_builddir)/$(PACKAGE)-docs-$(VERSION).tar.gz -C $(distdir) docs
-	rm -rf $(distdir)
-
-
-clean-local:
-	$(RM) -r latex
-	$(RM) -r @manual_dest@ man @PACKAGE@.ps @PACKAGE@.pdf
-
-dist-hook:
-	-rm -f $(distdir)/Doxyfile
diff --git a/src/site/doxy/customdoxygen.css b/src/site/doxy/customdoxygen.css
new file mode 100644
index 0000000..2109924
--- /dev/null
+++ b/src/site/doxy/customdoxygen.css
@@ -0,0 +1,22 @@
+.navpath li.center
+{
+        list-style-type:none;
+        float:none;
+        padding-left:10px;
+        padding-right:10px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+	line-height: 100%;
+        text-align: center;
+}
+
+code
+{
+	border-radius: 3px;
+	padding: 3px 4px;
+	background-color: #f7f7f9;
+	border: 1px solid #e1e1e8;
+}
diff --git a/src/site/doxy/footer.html b/src/site/doxy/footer.html
new file mode 100644
index 0000000..2639b9a
--- /dev/null
+++ b/src/site/doxy/footer.html
@@ -0,0 +1,25 @@
+<!-- HTML footer for doxygen 1.8.13-->
+<!-- start footer part -->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    $navpath
+    <li class="footer">$generatedby
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="$relpath^doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
+    <li class="center">
+Copyright &copy; 2003-2020 <a href="https://www.apache.org/">Apache Software Foundation</a>. All Rights Reserved. <br/>
+Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.
+    </li>
+  </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+<!--BEGIN !GENERATE_TREEVIEW-->
+<hr class="footer"/><address class="footer"><small>
+$generatedby &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
+</a> $doxygenversion
+</small></address>
+<!--END !GENERATE_TREEVIEW-->
+</body>
+</html>
diff --git a/src/site/fml/Makefile.am b/src/site/fml/Makefile.am
deleted file mode 100644
index 8e6be87..0000000
--- a/src/site/fml/Makefile.am
+++ /dev/null
@@ -1,15 +0,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.
-#
diff --git a/src/site/images/add.gif b/src/site/images/add.gif
new file mode 100644
index 0000000..ac0bdcc
--- /dev/null
+++ b/src/site/images/add.gif
Binary files differ
diff --git a/src/site/images/fix.gif b/src/site/images/fix.gif
new file mode 100644
index 0000000..2585f13
--- /dev/null
+++ b/src/site/images/fix.gif
Binary files differ
diff --git a/src/site/images/update.gif b/src/site/images/update.gif
new file mode 100644
index 0000000..71ca225
--- /dev/null
+++ b/src/site/images/update.gif
Binary files differ
diff --git a/src/site/markdown/0-community.md b/src/site/markdown/0-community.md
new file mode 100644
index 0000000..0b819f1
--- /dev/null
+++ b/src/site/markdown/0-community.md
@@ -0,0 +1,27 @@
+Community {#community}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+See the following pages for community information:
+
+* @subpage issue-tracking
+* @subpage mailing-lists
diff --git a/src/site/markdown/1-usage.md b/src/site/markdown/1-usage.md
new file mode 100644
index 0000000..f8c6fe7
--- /dev/null
+++ b/src/site/markdown/1-usage.md
@@ -0,0 +1,30 @@
+Usage {#usage-overview}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+See the following pages for usage information:
+
+* @subpage usage
+* @subpage extending-log4cxx
+* @subpage faq
+* @subpage configuration-samples
+* @subpage qt-support
diff --git a/src/site/markdown/2-get.md b/src/site/markdown/2-get.md
new file mode 100644
index 0000000..baac33b
--- /dev/null
+++ b/src/site/markdown/2-get.md
@@ -0,0 +1,26 @@
+Get {#get}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+* @subpage download
+* @subpage changelog
+* @subpage license
diff --git a/src/site/markdown/3-development.md b/src/site/markdown/3-development.md
new file mode 100644
index 0000000..c0e6c07
--- /dev/null
+++ b/src/site/markdown/3-development.md
@@ -0,0 +1,30 @@
+Development {#development-overview}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+See the following pages for development information:
+
+* @subpage source-repository
+* @subpage dependencies
+* @subpage building
+* @subpage build-cmake
+* @subpage build-vcpkg
diff --git a/src/site/markdown/change-report-gh.md b/src/site/markdown/change-report-gh.md
new file mode 100644
index 0000000..32c258b
--- /dev/null
+++ b/src/site/markdown/change-report-gh.md
@@ -0,0 +1,511 @@
+Changelog {#changelog}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+## Changes
+
+### Release History
+
+|                                                                                        |            |                      |
+| -------------------------------------------------------------------------------------- | ---------- | -------------------- |
+| Version                                                                                | Date       | Description          |
+| [0.11.0](#0.11.0) | 2020-08-09 | Maintenance release. |
+| [0.10.0](#0.10.0) | 2008-04-03 | First Apache release |
+| [0.9.7](#0.9.7)   | 2004-05-10 |                      |
+| [0.9.6](#0.9.6)   | 2004-04-11 |                      |
+| [0.9.5](#0.9.5)   | 2004-02-04 |                      |
+| [0.9.4](#0.9.4)   | 2003-10-25 |                      |
+| [0.9.3](#0.9.3)   | 2003-09-19 |                      |
+| [0.9.2](#0.9.2)   | 2003-08-10 |                      |
+| [0.9.1](#0.9.1)   | 2003-08-06 |                      |
+| [0.9.0](#0.9.0)   | 2003-08-06 |                      |
+| [0.1.1](#0.1.1)   | 2003-07-09 |                      |
+| [0.1.0](#0.1.0)   | 2003-07-08 |                      |
+| [0.0.1](#0.0.1)   | 2003-05-31 |                      |
+
+<a name="0.11.0"/>
+### Release 0.11.0 - 2020-08-09
+
+|                                                                     |                                                                                                                                                                                                                                                 |    |
+| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
+| Type                                                                | Changes                                                                                                                                                                                                                                         | By |
+| ![](images/fix.gif "fix")    | cmake and autotools generate different versioned binaries Fixes [LOGCXX-512](https://issues.apache.org/jira/browse/LOGCXX-512).                                                                                                                 |    |
+| ![](images/fix.gif "fix")    | CachedDateFormat reuses timestamps without updating milliseconds after formatting timestamp with ms == 654 Fixes [LOGCXX-506](https://issues.apache.org/jira/browse/LOGCXX-506).                                                                |    |
+| ![](images/update.gif "update") | Checksums/Signatures don't match for log4cxx binaries Fixes [LOGCXX-503](https://issues.apache.org/jira/browse/LOGCXX-503).                                                                                                                     |    |
+| ![](images/update.gif "update") | appenderattachable.h function doc formatted "incorrectly" Fixes [LOGCXX-502](https://issues.apache.org/jira/browse/LOGCXX-502).                                                                                                                 |    |
+| ![](images/update.gif "update") | Logging in Timing-Critical Applications Fixes [LOGCXX-500](https://issues.apache.org/jira/browse/LOGCXX-500).                                                                                                                                   |    |
+| ![](images/fix.gif "fix")    | Provide a windows build environment for the project by replacing the ant build with a CMake build Fixes [LOGCXX-494](https://issues.apache.org/jira/browse/LOGCXX-494).                                                                         |    |
+| ![](images/fix.gif "fix")    | Wrong usage of milli- vs. micro- and non- vs. milliseconds in some docs. Fixes [LOGCXX-493](https://issues.apache.org/jira/browse/LOGCXX-493).                                                                                                  |    |
+| ![](images/fix.gif "fix")    | conditional expression is constant Fixes [LOGCXX-490](https://issues.apache.org/jira/browse/LOGCXX-490).                                                                                                                                        |    |
+| ![](images/fix.gif "fix")    | Space after log level hides messages Fixes [LOGCXX-488](https://issues.apache.org/jira/browse/LOGCXX-488).                                                                                                                                      |    |
+| ![](images/fix.gif "fix")    | Spelling error s/excute/execute Fixes [LOGCXX-484](https://issues.apache.org/jira/browse/LOGCXX-484).                                                                                                                                           |    |
+| ![](images/update.gif "update") | Not able to see hebrew values when logging in log4cxx Fixes [LOGCXX-483](https://issues.apache.org/jira/browse/LOGCXX-483).                                                                                                                     |    |
+| ![](images/fix.gif "fix")    | Build failure with GCC-6 Fixes [LOGCXX-482](https://issues.apache.org/jira/browse/LOGCXX-482).                                                                                                                                                  |    |
+| ![](images/fix.gif "fix")    | TimeBasedRollingPolicy should append as configured on rollover Fixes [LOGCXX-464](https://issues.apache.org/jira/browse/LOGCXX-464).                                                                                                            |    |
+| ![](images/fix.gif "fix")    | LogLog::setQuietMode(true) does not suppress exception reporting Fixes [LOGCXX-455](https://issues.apache.org/jira/browse/LOGCXX-455).                                                                                                          |    |
+| ![](images/fix.gif "fix")    | make install fails, trying to overwrite header files Fixes [LOGCXX-446](https://issues.apache.org/jira/browse/LOGCXX-446).                                                                                                                      |    |
+| ![](images/fix.gif "fix")    | Return by const reference in Logger::getName() Fixes [LOGCXX-443](https://issues.apache.org/jira/browse/LOGCXX-443).                                                                                                                            |    |
+| ![](images/fix.gif "fix")    | Autoconf 2.69 needs 'ACLOCAL\_AMFLAGS= -I .' Fixes [LOGCXX-433](https://issues.apache.org/jira/browse/LOGCXX-433).                                                                                                                              |    |
+| ![](images/fix.gif "fix")    | Wildcards in Makefile.am break either VPATH or non-VPATH installs Fixes [LOGCXX-428](https://issues.apache.org/jira/browse/LOGCXX-428).                                                                                                         |    |
+| ![](images/fix.gif "fix")    | exceptions in CachedDateFormatTestCase after LOGCXX-420 Fixes [LOGCXX-425](https://issues.apache.org/jira/browse/LOGCXX-425).                                                                                                                   |    |
+| ![](images/fix.gif "fix")    | liblog4cxx.pc.in should reflect dependency on apr-1, apr-1-util Fixes [LOGCXX-424](https://issues.apache.org/jira/browse/LOGCXX-424).                                                                                                           |    |
+| ![](images/fix.gif "fix")    | Repair autogen script warnings Fixes [LOGCXX-423](https://issues.apache.org/jira/browse/LOGCXX-423).                                                                                                                                            |    |
+| ![](images/fix.gif "fix")    | Regression of LOGCXX-420 Fixes [LOGCXX-422](https://issues.apache.org/jira/browse/LOGCXX-422).                                                                                                                                                  |    |
+| ![](images/fix.gif "fix")    | Possible out\_of\_range exception for millisecond formats in CachedDateFormat Fixes [LOGCXX-420](https://issues.apache.org/jira/browse/LOGCXX-420).                                                                                             |    |
+| ![](images/fix.gif "fix")    | atoi undefined on Mac OS 10.9 compiling stringhelper.cpp Fixes [LOGCXX-417](https://issues.apache.org/jira/browse/LOGCXX-417).                                                                                                                  |    |
+| ![](images/fix.gif "fix")    | Configure and watch could crash on app exit with static linking Fixes [LOGCXX-416](https://issues.apache.org/jira/browse/LOGCXX-416).                                                                                                           |    |
+| ![](images/fix.gif "fix")    | Empty XML configuration file causes crash Fixes [LOGCXX-415](https://issues.apache.org/jira/browse/LOGCXX-415).                                                                                                                                 |    |
+| ![](images/fix.gif "fix")    | possibly wrong use of autotools docdir (due to Alex Zbarcea) Fixes [LOGCXX-414](https://issues.apache.org/jira/browse/LOGCXX-414).                                                                                                              |    |
+| ![](images/fix.gif "fix")    | log4cxx doesn't compile on openembedded (due to Alex Zbarcea) Fixes [LOGCXX-413](https://issues.apache.org/jira/browse/LOGCXX-413).                                                                                                             |    |
+| ![](images/fix.gif "fix")    | Log4cxx doesn't roll normally when working under multiple processes environment Fixes [LOGCXX-412](https://issues.apache.org/jira/browse/LOGCXX-412).                                                                                           |    |
+| ![](images/fix.gif "fix")    | Crash when logging on multiple threads. Fixes [LOGCXX-411](https://issues.apache.org/jira/browse/LOGCXX-411).                                                                                                                                   |    |
+| ![](images/fix.gif "fix")    | C++11 does not allow char literals with highest bit set unless cast Fixes [LOGCXX-400](https://issues.apache.org/jira/browse/LOGCXX-400).                                                                                                       |    |
+| ![](images/fix.gif "fix")    | Non-ascii character output wrong. Fixes [LOGCXX-399](https://issues.apache.org/jira/browse/LOGCXX-399).                                                                                                                                         |    |
+| ![](images/fix.gif "fix")    | Infinite loop in Transcoder::encode(const LogString& src, std::wstring& dst) Fixes [LOGCXX-398](https://issues.apache.org/jira/browse/LOGCXX-398).                                                                                              |    |
+| ![](images/fix.gif "fix")    | Levels are not thread safe Fixes [LOGCXX-394](https://issues.apache.org/jira/browse/LOGCXX-394).                                                                                                                                                |    |
+| ![](images/fix.gif "fix")    | Hierarchy::updateParents loops forever on illegal logger-name like '.logger1' Fixes [LOGCXX-388](https://issues.apache.org/jira/browse/LOGCXX-388).                                                                                             |    |
+| ![](images/fix.gif "fix")    | Mingw build type conversion error Fixes [LOGCXX-382](https://issues.apache.org/jira/browse/LOGCXX-382).                                                                                                                                         |    |
+| ![](images/fix.gif "fix")    | Pkgconfig can't find dependencies properly if log4cxx built statically Fixes [LOGCXX-381](https://issues.apache.org/jira/browse/LOGCXX-381).                                                                                                    |    |
+| ![](images/fix.gif "fix")    | Load Properties File Fails When There Are multibyte Characters in the Path Fixes [LOGCXX-369](https://issues.apache.org/jira/browse/LOGCXX-369).                                                                                                |    |
+| ![](images/fix.gif "fix")    | method and class name functions not properly implemented Fixes [LOGCXX-368](https://issues.apache.org/jira/browse/LOGCXX-368).                                                                                                                  |    |
+| ![](images/fix.gif "fix")    | Build fails on Linux with g++ 4.4 Fixes [LOGCXX-367](https://issues.apache.org/jira/browse/LOGCXX-367).                                                                                                                                         |    |
+| ![](images/fix.gif "fix")    | Errors when compile log4cxx 0.10.0 under Win7 x64 with Visual Studio 2010 (due to Christian Boos and Feng Nan) Fixes [LOGCXX-366](https://issues.apache.org/jira/browse/LOGCXX-366).                                                            |    |
+| ![](images/fix.gif "fix")    | Unit tests fail on system dates later than 2009-12-31. Fixes [LOGCXX-365](https://issues.apache.org/jira/browse/LOGCXX-365).                                                                                                                    |    |
+| ![](images/fix.gif "fix")    | SMTPAppender generating Emails with an empty body Fixes [LOGCXX-358](https://issues.apache.org/jira/browse/LOGCXX-358).                                                                                                                         |    |
+| ![](images/fix.gif "fix")    | apache-log4cxx-0.10.0\\src\\main\\include\\log4cxx\\spi\\configurator.h(57) : warning C4231: nonstandard extension used : 'extern' before template explicit instantiation Fixes [LOGCXX-356](https://issues.apache.org/jira/browse/LOGCXX-356). |    |
+| ![](images/fix.gif "fix")    | When a client disconnects the SocketHubAppender crashes on the next log message Fixes [LOGCXX-353](https://issues.apache.org/jira/browse/LOGCXX-353).                                                                                           |    |
+| ![](images/fix.gif "fix")    | Download page does not have link to KEYS file Fixes [LOGCXX-351](https://issues.apache.org/jira/browse/LOGCXX-351).                                                                                                                             |    |
+| ![](images/fix.gif "fix")    | Transcoder::encodeCharsetName bungles encoding Fixes [LOGCXX-340](https://issues.apache.org/jira/browse/LOGCXX-340).                                                                                                                            |    |
+| ![](images/update.gif "update") | Child thread does not inherit a copy of the mapped diagnostic context of its parent Fixes [LOGCXX-339](https://issues.apache.org/jira/browse/LOGCXX-339).                                                                                       |    |
+| ![](images/fix.gif "fix")    | Suggested fix for socketappender not reconnecting multiple times Fixes [LOGCXX-337](https://issues.apache.org/jira/browse/LOGCXX-337).                                                                                                          |    |
+| ![](images/fix.gif "fix")    | Test compilation fails: Overloading ambiguity Fixes [LOGCXX-336](https://issues.apache.org/jira/browse/LOGCXX-336).                                                                                                                             |    |
+| ![](images/fix.gif "fix")    | DailyRollingFileAppender should roll if program doesn't run at rolling time Fixes [LOGCXX-331](https://issues.apache.org/jira/browse/LOGCXX-331).                                                                                               |    |
+| ![](images/fix.gif "fix")    | TLS memory of APR is not freed in destructor of APRInitializer Fixes [LOGCXX-320](https://issues.apache.org/jira/browse/LOGCXX-320).                                                                                                            |    |
+| ![](images/fix.gif "fix")    | Please make sure that the LOG4CXX\_\* macro's can be used as ordinary statements. Fixes [LOGCXX-319](https://issues.apache.org/jira/browse/LOGCXX-319).                                                                                         |    |
+| ![](images/fix.gif "fix")    | Log4cxx triggers locking inversion which can result in a deadlock. Fixes [LOGCXX-317](https://issues.apache.org/jira/browse/LOGCXX-317).                                                                                                        |    |
+| ![](images/fix.gif "fix")    | Build process fails in case of absence of iconv support in apr-util Fixes [LOGCXX-313](https://issues.apache.org/jira/browse/LOGCXX-313).                                                                                                       |    |
+| ![](images/fix.gif "fix")    | Property/DOMConfigurator::configureAndWatch can continue to run after APR termination Fixes [LOGCXX-305](https://issues.apache.org/jira/browse/LOGCXX-305).                                                                                     |    |
+| ![](images/fix.gif "fix")    | BasicConfigurator::configure results in writer not set warning. Fixes [LOGCXX-304](https://issues.apache.org/jira/browse/LOGCXX-304).                                                                                                           |    |
+| ![](images/fix.gif "fix")    | DOMConfigurator does not set ErrorHandler. Fixes [LOGCXX-303](https://issues.apache.org/jira/browse/LOGCXX-303).                                                                                                                                |    |
+| ![](images/fix.gif "fix")    | ODBCAppender connection settings broken (or just have changed). Fixes [LOGCXX-300](https://issues.apache.org/jira/browse/LOGCXX-300).                                                                                                           |    |
+| ![](images/fix.gif "fix")    | odbcappender.cpp does not compile with unixODBC on linux. Fixes [LOGCXX-299](https://issues.apache.org/jira/browse/LOGCXX-299).                                                                                                                 |    |
+| ![](images/fix.gif "fix")    | SMTPAppender does not build properly with autotools. Fixes [LOGCXX-298](https://issues.apache.org/jira/browse/LOGCXX-298).                                                                                                                      |    |
+| ![](images/fix.gif "fix")    | Escape sequences not recognized in property files. Fixes [LOGCXX-293](https://issues.apache.org/jira/browse/LOGCXX-293).                                                                                                                        |    |
+| ![](images/fix.gif "fix")    | Value continuation does not properly handle CRLF in property files. Fixes [LOGCXX-292](https://issues.apache.org/jira/browse/LOGCXX-292).                                                                                                       |    |
+| ![](images/fix.gif "fix")    | Tab characters are not recognized in property files. Fixes [LOGCXX-291](https://issues.apache.org/jira/browse/LOGCXX-291).                                                                                                                      |    |
+| ![](images/fix.gif "fix")    | Unnecessary trailing semi-colons after LOG4CXX\_INFO et al in docs, examples and tests. Fixes [LOGCXX-288](https://issues.apache.org/jira/browse/LOGCXX-288).                                                                                   |    |
+| ![](images/fix.gif "fix")    | gcc 4.3 requires \#include \<cstring\> when using memcpy and related. Fixes [LOGCXX-286](https://issues.apache.org/jira/browse/LOGCXX-286).                                                                                                     |    |
+| ![](images/fix.gif "fix")    | LevelRangeFilter has default value for acceptOnMatch that is different from log4j Fixes [LOGCXX-285](https://issues.apache.org/jira/browse/LOGCXX-285).                                                                                         |    |
+| ![](images/fix.gif "fix")    | Unit tests fail to compile with xlc\_r on AIX Fixes [LOGCXX-284](https://issues.apache.org/jira/browse/LOGCXX-284).                                                                                                                             |    |
+| ![](images/fix.gif "fix")    | Suspicious, but harmless, reuse of LOCAL1 in SyslogAppender Fixes [LOGCXX-283](https://issues.apache.org/jira/browse/LOGCXX-283).                                                                                                               |    |
+| ![](images/fix.gif "fix")    | Thread::sleep not affected by Thread::interrupt. Fixes [LOGCXX-282](https://issues.apache.org/jira/browse/LOGCXX-282).                                                                                                                          |    |
+| ![](images/fix.gif "fix")    | Sun Studio 11 reports function hides base virtual function warning Fixes [LOGCXX-281](https://issues.apache.org/jira/browse/LOGCXX-281).                                                                                                        |    |
+| ![](images/fix.gif "fix")    | tests and sample code unnecessarily compiled during default make target Fixes [LOGCXX-280](https://issues.apache.org/jira/browse/LOGCXX-280).                                                                                                   |    |
+| ![](images/fix.gif "fix")    | Threads for reconnecting sockets do not end cleanly when program exits Fixes [LOGCXX-278](https://issues.apache.org/jira/browse/LOGCXX-278).                                                                                                    |    |
+| ![](images/fix.gif "fix")    | Reconnection not working for sockets Fixes [LOGCXX-277](https://issues.apache.org/jira/browse/LOGCXX-277).                                                                                                                                      |    |
+| ![](images/fix.gif "fix")    | AndFilter and others defined but not implemented Fixes [LOGCXX-276](https://issues.apache.org/jira/browse/LOGCXX-276).                                                                                                                          |    |
+| ![](images/fix.gif "fix")    | Headers cannot be included with very strict warning settings Fixes [LOGCXX-275](https://issues.apache.org/jira/browse/LOGCXX-275).                                                                                                              |    |
+| ![](images/fix.gif "fix")    | Prevent filenamepatterntestcase from failing in some timezones Fixes [LOGCXX-273](https://issues.apache.org/jira/browse/LOGCXX-273).                                                                                                            |    |
+| ![](images/update.gif "update") | Apache log4cxx 0.11.0 release Fixes [LOGCXX-272](https://issues.apache.org/jira/browse/LOGCXX-272).                                                                                                                                             |    |
+| ![](images/fix.gif "fix")    | MDC::put will not overwrite existing key value pair Fixes [LOGCXX-271](https://issues.apache.org/jira/browse/LOGCXX-271).                                                                                                                       |    |
+| ![](images/fix.gif "fix")    | Add ability to compile out logging by logging level. Fixes [LOGCXX-270](https://issues.apache.org/jira/browse/LOGCXX-270).                                                                                                                      |    |
+| ![](images/fix.gif "fix")    | Local variables hide member variables Fixes [LOGCXX-267](https://issues.apache.org/jira/browse/LOGCXX-267).                                                                                                                                     |    |
+| ![](images/fix.gif "fix")    | Eliminate Extra ";" ignored warnings Fixes [LOGCXX-266](https://issues.apache.org/jira/browse/LOGCXX-266).                                                                                                                                      |    |
+| ![](images/fix.gif "fix")    | Eliminate anachronism warnings Fixes [LOGCXX-265](https://issues.apache.org/jira/browse/LOGCXX-265).                                                                                                                                            |    |
+| ![](images/fix.gif "fix")    | Bad link to log4cxx-dev archive Fixes [LOGCXX-263](https://issues.apache.org/jira/browse/LOGCXX-263).                                                                                                                                           |    |
+| ![](images/fix.gif "fix")    | socketappendertestcase and xmlsocketappendertestcase not run Fixes [LOGCXX-262](https://issues.apache.org/jira/browse/LOGCXX-262).                                                                                                              |    |
+| ![](images/fix.gif "fix")    | Console appender crashes if layout is not set Fixes [LOGCXX-249](https://issues.apache.org/jira/browse/LOGCXX-249).                                                                                                                             |    |
+| ![](images/add.gif "add")    | Set SONAME in cmake like autotools based buildsystem would do. Fixes [32](https://github.com/apache/logging-log4cxx/pull/32).                                                                                                                   |    |
+| ![](images/add.gif "add")    | Implementation of map-based filter. Fixes [24](https://github.com/apache/logging-log4cxx/pull/24).                                                                                                                                              |    |
+| ![](images/add.gif "add")    | Added support for building log4cxx as a statically linked library on Windows. Fixes [21](https://github.com/apache/logging-log4cxx/pull/21).                                                                                                    |    |
+| ![](images/add.gif "add")    | Replaced ant build with cmake. Fixes [14](https://github.com/apache/logging-log4cxx/pull/14).                                                                                                                                                   |    |
+| ![](images/add.gif "add")    | JSONLayout Fixes [13](https://github.com/apache/logging-log4cxx/pull/13).                                                                                                                                                                       |    |
+| ![](images/update.gif "update") | Behavior of StringHelper::startsWith and endsWith synced.                                                                                                                                                                                       |    |
+| ![](images/update.gif "update") | Documented C (class) and M (method) log format keywords.                                                                                                                                                                                        |    |
+| ![](images/add.gif "add")    | LocationInfo for Borland C++ Builder and successors improved.                                                                                                                                                                                   |    |
+
+<a name="0.10.0"/>
+### Release 0.10.0 - 2008-04-03
+
+|                                                                     |                                                                                                                                                                                                |    |
+| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
+| Type                                                                | Changes                                                                                                                                                                                        | By |
+| ![](images/fix.gif "fix")    | Several appenders fail to compile in Visual Studio 2008 Fixes [LOGCXX-259](https://issues.apache.org/jira/browse/LOGCXX-259).                                                                  |    |
+| ![](images/fix.gif "fix")    | unable to build from make dist package due to missing doxygen file Fixes [LOGCXX-258](https://issues.apache.org/jira/browse/LOGCXX-258).                                                       |    |
+| ![](images/fix.gif "fix")    | ServerSocket::accept hangs on Unix Fixes [LOGCXX-257](https://issues.apache.org/jira/browse/LOGCXX-257).                                                                                       |    |
+| ![](images/fix.gif "fix")    | SocketHubAppender fails after accepting connection Fixes [LOGCXX-256](https://issues.apache.org/jira/browse/LOGCXX-256).                                                                       |    |
+| ![](images/add.gif "add")    | Add build option for static C RTL Fixes [LOGCXX-254](https://issues.apache.org/jira/browse/LOGCXX-254).                                                                                        |    |
+| ![](images/fix.gif "fix")    | Transcoder compilation error with utf-8 charset Fixes [LOGCXX-253](https://issues.apache.org/jira/browse/LOGCXX-253).                                                                          |    |
+| ![](images/add.gif "add")    | Add documentation for use of operator\<\< in logging requests Fixes [LOGCXX-252](https://issues.apache.org/jira/browse/LOGCXX-252).                                                            |    |
+| ![](images/fix.gif "fix")    | NDC::cloneStack and NDC::inherit missing in 0.10.0 RC2 Fixes [LOGCXX-251](https://issues.apache.org/jira/browse/LOGCXX-251).                                                                   |    |
+| ![](images/fix.gif "fix")    | ODBCAppender has unicode issues Fixes [LOGCXX-248](https://issues.apache.org/jira/browse/LOGCXX-248).                                                                                          |    |
+| ![](images/fix.gif "fix")    | MSVC project has wrong additional include directories Fixes [LOGCXX-247](https://issues.apache.org/jira/browse/LOGCXX-247).                                                                    |    |
+| ![](images/fix.gif "fix")    | Config refresh hangs a client application that uses TelnetAppender Fixes [LOGCXX-246](https://issues.apache.org/jira/browse/LOGCXX-246).                                                       |    |
+| ![](images/fix.gif "fix")    | Problem Compile in Doxy Fixes [LOGCXX-243](https://issues.apache.org/jira/browse/LOGCXX-243).                                                                                                  |    |
+| ![](images/update.gif "update") | Eliminate log4cxx proxies for APR types Fixes [LOGCXX-242](https://issues.apache.org/jira/browse/LOGCXX-242).                                                                                  |    |
+| ![](images/fix.gif "fix")    | Non-ascii named files have names mangled Fixes [LOGCXX-241](https://issues.apache.org/jira/browse/LOGCXX-241).                                                                                 |    |
+| ![](images/update.gif "update") | Inconsistent const qualification on logging methods. Fixes [LOGCXX-239](https://issues.apache.org/jira/browse/LOGCXX-239).                                                                     |    |
+| ![](images/fix.gif "fix")    | Include missing headers Fixes [LOGCXX-237](https://issues.apache.org/jira/browse/LOGCXX-237).                                                                                                  |    |
+| ![](images/fix.gif "fix")    | Re-order constructor initialiser lists to match declaration order Fixes [LOGCXX-236](https://issues.apache.org/jira/browse/LOGCXX-236).                                                        |    |
+| ![](images/add.gif "add")    | Add ObjectPtrT::exchange Fixes [LOGCXX-235](https://issues.apache.org/jira/browse/LOGCXX-235).                                                                                                 |    |
+| ![](images/fix.gif "fix")    | Assignment operator removes const qualifier Fixes [LOGCXX-234](https://issues.apache.org/jira/browse/LOGCXX-234).                                                                              |    |
+| ![](images/update.gif "update") | Unnecessary casts in ObjectPtrT Fixes [LOGCXX-233](https://issues.apache.org/jira/browse/LOGCXX-233).                                                                                          |    |
+| ![](images/update.gif "update") | Drop src/performance Fixes [LOGCXX-232](https://issues.apache.org/jira/browse/LOGCXX-232).                                                                                                     |    |
+| ![](images/fix.gif "fix")    | Deadlock in AsyncAppender Fixes [LOGCXX-231](https://issues.apache.org/jira/browse/LOGCXX-231).                                                                                                |    |
+| ![](images/update.gif "update") | Align ant build options with automake Fixes [LOGCXX-230](https://issues.apache.org/jira/browse/LOGCXX-230).                                                                                    |    |
+| ![](images/update.gif "update") | Remove @author tags Fixes [LOGCXX-228](https://issues.apache.org/jira/browse/LOGCXX-228).                                                                                                      |    |
+| ![](images/update.gif "update") | Remove @since tags Fixes [LOGCXX-227](https://issues.apache.org/jira/browse/LOGCXX-227).                                                                                                       |    |
+| ![](images/update.gif "update") | Default configurator uses \*.properties in preference to \*.xml Fixes [LOGCXX-226](https://issues.apache.org/jira/browse/LOGCXX-226).                                                          |    |
+| ![](images/update.gif "update") | Migrate unit tests from LGPL'd CPPUNIT to an ASL'd testing framework Fixes [LOGCXX-225](https://issues.apache.org/jira/browse/LOGCXX-225).                                                     |    |
+| ![](images/fix.gif "fix")    | trunk compile error. Fixes [LOGCXX-222](https://issues.apache.org/jira/browse/LOGCXX-222).                                                                                                     |    |
+| ![](images/fix.gif "fix")    | ThreadID layout does not match debugger Fixes [LOGCXX-221](https://issues.apache.org/jira/browse/LOGCXX-221).                                                                                  |    |
+| ![](images/fix.gif "fix")    | Memory leaks when using MFC Fixes [LOGCXX-220](https://issues.apache.org/jira/browse/LOGCXX-220).                                                                                              |    |
+| ![](images/fix.gif "fix")    | suspicious warnings Fixes [LOGCXX-219](https://issues.apache.org/jira/browse/LOGCXX-219).                                                                                                      |    |
+| ![](images/add.gif "add")    | Visual Studio 8 build Fixes [LOGCXX-218](https://issues.apache.org/jira/browse/LOGCXX-218).                                                                                                    |    |
+| ![](images/fix.gif "fix")    | Not initialized LoggerPtr segfault program. Fixes [LOGCXX-217](https://issues.apache.org/jira/browse/LOGCXX-217).                                                                              |    |
+| ![](images/fix.gif "fix")    | crash on program exit Fixes [LOGCXX-216](https://issues.apache.org/jira/browse/LOGCXX-216).                                                                                                    |    |
+| ![](images/update.gif "update") | Eliminate sqlext.h from odbcappender.h Fixes [LOGCXX-215](https://issues.apache.org/jira/browse/LOGCXX-215).                                                                                   |    |
+| ![](images/fix.gif "fix")    | Possible memory leak due to fault in build process (via make) Fixes [LOGCXX-214](https://issues.apache.org/jira/browse/LOGCXX-214).                                                            |    |
+| ![](images/fix.gif "fix")    | trace method implementation is missing Fixes [LOGCXX-213](https://issues.apache.org/jira/browse/LOGCXX-213).                                                                                   |    |
+| ![](images/fix.gif "fix")    | unittest failed Fixes [LOGCXX-212](https://issues.apache.org/jira/browse/LOGCXX-212).                                                                                                          |    |
+| ![](images/fix.gif "fix")    | Crash(Segmentation Fault) in DailyRollingFileAppender when file change Fixes [LOGCXX-211](https://issues.apache.org/jira/browse/LOGCXX-211).                                                   |    |
+| ![](images/fix.gif "fix")    | HTMLLayout NDC null check Fixes [LOGCXX-210](https://issues.apache.org/jira/browse/LOGCXX-210).                                                                                                |    |
+| ![](images/fix.gif "fix")    | A message of type wchar\_t\* is not beeing written correctly to the internal message buffer (Revision: 592627) Fixes [LOGCXX-209](https://issues.apache.org/jira/browse/LOGCXX-209).           |    |
+| ![](images/fix.gif "fix")    | isTraceEnabled implemenation missing in logger.cpp (Revision: 592627) Fixes [LOGCXX-208](https://issues.apache.org/jira/browse/LOGCXX-208).                                                    |    |
+| ![](images/fix.gif "fix")    | PatternParserTestCase and FileNamePatternTestCase fail only with VC6 Fixes [LOGCXX-204](https://issues.apache.org/jira/browse/LOGCXX-204).                                                     |    |
+| ![](images/fix.gif "fix")    | ObjectPtrT has inconsistent const-ness on accessors Fixes [LOGCXX-202](https://issues.apache.org/jira/browse/LOGCXX-202).                                                                      |    |
+| ![](images/add.gif "add")    | Visual Studio 6 build Fixes [LOGCXX-201](https://issues.apache.org/jira/browse/LOGCXX-201).                                                                                                    |    |
+| ![](images/add.gif "add")    | Implement compression for RollingFileAppender Fixes [LOGCXX-200](https://issues.apache.org/jira/browse/LOGCXX-200).                                                                            |    |
+| ![](images/fix.gif "fix")    | ant can't generate vc6 project Fixes [LOGCXX-197](https://issues.apache.org/jira/browse/LOGCXX-197).                                                                                           |    |
+| ![](images/fix.gif "fix")    | Syslog appender destructor can cause core Fixes [LOGCXX-196](https://issues.apache.org/jira/browse/LOGCXX-196).                                                                                |    |
+| ![](images/fix.gif "fix")    | Syslog appender adds characters to output. Fixes [LOGCXX-195](https://issues.apache.org/jira/browse/LOGCXX-195).                                                                               |    |
+| ![](images/fix.gif "fix")    | Garbage in log files when appenders are defined in multiple levels of the logger hierarchy Fixes [LOGCXX-194](https://issues.apache.org/jira/browse/LOGCXX-194).                               |    |
+| ![](images/update.gif "update") | Please rename or remove new local variable "buf" in Logger.h macros Fixes [LOGCXX-193](https://issues.apache.org/jira/browse/LOGCXX-193).                                                      |    |
+| ![](images/update.gif "update") | Suggested improvements to log4cxx webpages Fixes [LOGCXX-192](https://issues.apache.org/jira/browse/LOGCXX-192).                                                                               |    |
+| ![](images/fix.gif "fix")    | Application cores when syslog appender is given an unreachable host/ip. Fixes [LOGCXX-191](https://issues.apache.org/jira/browse/LOGCXX-191).                                                  |    |
+| ![](images/fix.gif "fix")    | The 'logger.h' header includes itself. Fixes [LOGCXX-190](https://issues.apache.org/jira/browse/LOGCXX-190).                                                                                   |    |
+| ![](images/update.gif "update") | Migrate to Maven 2.0 for documentation and packaging Fixes [LOGCXX-189](https://issues.apache.org/jira/browse/LOGCXX-189).                                                                     |    |
+| ![](images/update.gif "update") | Upgrade to apr 1.2.9 and apr-util 1.2.8 Fixes [LOGCXX-188](https://issues.apache.org/jira/browse/LOGCXX-188).                                                                                  |    |
+| ![](images/fix.gif "fix")    | LogLog::emit() could potentially interleave messages Fixes [LOGCXX-187](https://issues.apache.org/jira/browse/LOGCXX-187).                                                                     |    |
+| ![](images/fix.gif "fix")    | Garbage characters in log files when log requests from multiple threads with hyperthreading enabled Fixes [LOGCXX-186](https://issues.apache.org/jira/browse/LOGCXX-186).                      |    |
+| ![](images/fix.gif "fix")    | Crash when log level set to 'inherited' Fixes [LOGCXX-184](https://issues.apache.org/jira/browse/LOGCXX-184).                                                                                  |    |
+| ![](images/fix.gif "fix")    | Compiler warning: dereferencing type-punned pointer will break strict-aliasing rules Fixes [LOGCXX-183](https://issues.apache.org/jira/browse/LOGCXX-183).                                     |    |
+| ![](images/fix.gif "fix")    | missing man page for simplesocketserver Fixes [LOGCXX-182](https://issues.apache.org/jira/browse/LOGCXX-182).                                                                                  |    |
+| ![](images/fix.gif "fix")    | Level::DEBUG and other non-local statics cause crash on app shutdown on AIX Fixes [LOGCXX-181](https://issues.apache.org/jira/browse/LOGCXX-181).                                              |    |
+| ![](images/fix.gif "fix")    | Build fails at domconfigurator.h Fixes [LOGCXX-180](https://issues.apache.org/jira/browse/LOGCXX-180).                                                                                         |    |
+| ![](images/add.gif "add")    | example applications do SIGABRT on aix 5.2 Fixes [LOGCXX-179](https://issues.apache.org/jira/browse/LOGCXX-179).                                                                               |    |
+| ![](images/fix.gif "fix")    | Link failure if wchar\_t cannot be determined as UTF-16 or UTF-32 Fixes [LOGCXX-178](https://issues.apache.org/jira/browse/LOGCXX-178).                                                        |    |
+| ![](images/fix.gif "fix")    | SocketImpl::accept uses private APR function: apr\_wait\_for\_io\_or\_timeout Fixes [LOGCXX-177](https://issues.apache.org/jira/browse/LOGCXX-177).                                            |    |
+| ![](images/fix.gif "fix")    | APRCharsetEncoder is not thread safe Fixes [LOGCXX-175](https://issues.apache.org/jira/browse/LOGCXX-175).                                                                                     |    |
+| ![](images/fix.gif "fix")    | configure fail with ".infig.status: error: cannot find input file:" Fixes [LOGCXX-172](https://issues.apache.org/jira/browse/LOGCXX-172).                                                      |    |
+| ![](images/add.gif "add")    | Add project description file for projects.apache.org Fixes [LOGCXX-171](https://issues.apache.org/jira/browse/LOGCXX-171).                                                                     |    |
+| ![](images/fix.gif "fix")    | XMLLayoutTestCase fails on compilers that do not provide location info Fixes [LOGCXX-169](https://issues.apache.org/jira/browse/LOGCXX-169).                                                   |    |
+| ![](images/fix.gif "fix")    | log4j.dtd does not contain rollingPolicy and other o.a.l.r.RFA elements Fixes [LOGCXX-168](https://issues.apache.org/jira/browse/LOGCXX-168).                                                  |    |
+| ![](images/fix.gif "fix")    | system locale charmap is not determined properly on Fedora Core 6 Fixes [LOGCXX-167](https://issues.apache.org/jira/browse/LOGCXX-167).                                                        |    |
+| ![](images/fix.gif "fix")    | XMLSocketAppender may generate erroneous output due to mismatched encoding Fixes [LOGCXX-165](https://issues.apache.org/jira/browse/LOGCXX-165).                                               |    |
+| ![](images/fix.gif "fix")    | XMLSocketAppender is disabled Fixes [LOGCXX-164](https://issues.apache.org/jira/browse/LOGCXX-164).                                                                                            |    |
+| ![](images/fix.gif "fix")    | liblog4cxx (svn 480882) does not link on Mac OS X 10.4 Fixes [LOGCXX-163](https://issues.apache.org/jira/browse/LOGCXX-163).                                                                   |    |
+| ![](images/fix.gif "fix")    | Problem printing string with embedded NULL character Fixes [LOGCXX-162](https://issues.apache.org/jira/browse/LOGCXX-162).                                                                     |    |
+| ![](images/fix.gif "fix")    | Using RollingFileAppender increases the working set with each rollover Fixes [LOGCXX-161](https://issues.apache.org/jira/browse/LOGCXX-161).                                                   |    |
+| ![](images/fix.gif "fix")    | helpers/object.h: DECLARE\_LOG4CXX\_OBJECT macro definition is missing virtual destructor declaration Fixes [LOGCXX-160](https://issues.apache.org/jira/browse/LOGCXX-160).                    |    |
+| ![](images/fix.gif "fix")    | Initialization of local static objects out of order on Linux Fixes [LOGCXX-159](https://issues.apache.org/jira/browse/LOGCXX-159).                                                             |    |
+| ![](images/fix.gif "fix")    | tolower not defined in stringhelper.cpp Fixes [LOGCXX-158](https://issues.apache.org/jira/browse/LOGCXX-158).                                                                                  |    |
+| ![](images/fix.gif "fix")    | make install fails since @manual\_dest@ replacement is missing in Makefiles Fixes [LOGCXX-157](https://issues.apache.org/jira/browse/LOGCXX-157).                                              |    |
+| ![](images/update.gif "update") | immediate flush in console appender Fixes [LOGCXX-156](https://issues.apache.org/jira/browse/LOGCXX-156).                                                                                      |    |
+| ![](images/update.gif "update") | Update source headers per new ASF header policy Fixes [LOGCXX-155](https://issues.apache.org/jira/browse/LOGCXX-155).                                                                          |    |
+| ![](images/add.gif "add")    | Automate log4cxx site and doxygen generation and deployment Fixes [LOGCXX-153](https://issues.apache.org/jira/browse/LOGCXX-153).                                                              |    |
+| ![](images/fix.gif "fix")    | gcc warning about cast from \`const void\*' to \`log4cxx::helpers::Object\*' discards qualifiers from pointer target typ Fixes [LOGCXX-152](https://issues.apache.org/jira/browse/LOGCXX-152). |    |
+| ![](images/fix.gif "fix")    | Umlauts as literal in patternlayout won't be logged correct Fixes [LOGCXX-151](https://issues.apache.org/jira/browse/LOGCXX-151).                                                              |    |
+| ![](images/fix.gif "fix")    | logstream's operator\<\< declared in the wrong namespace Fixes [LOGCXX-150](https://issues.apache.org/jira/browse/LOGCXX-150).                                                                 |    |
+| ![](images/fix.gif "fix")    | make dist does not work Fixes [LOGCXX-149](https://issues.apache.org/jira/browse/LOGCXX-149).                                                                                                  |    |
+| ![](images/fix.gif "fix")    | DailyRollingFileAppender::~DailyRollingFileAppender must call finalize Fixes [LOGCXX-146](https://issues.apache.org/jira/browse/LOGCXX-146).                                                  |    |
+| ![](images/fix.gif "fix")    | \-xarch=v8plus should be removed from Makefile.in Fixes [LOGCXX-143](https://issues.apache.org/jira/browse/LOGCXX-143).                                                                        |    |
+| ![](images/fix.gif "fix")    | socketservertestcase.cpp does not compile with Sun Studio 11 on Solaris Fixes [LOGCXX-142](https://issues.apache.org/jira/browse/LOGCXX-142).                                                  |    |
+| ![](images/update.gif "update") | Upgrade to APR 1.2.7 or later Fixes [LOGCXX-141](https://issues.apache.org/jira/browse/LOGCXX-141).                                                                                            |    |
+| ![](images/fix.gif "fix")    | Handle leak with LoggingEvent::getCurrentThreadName Fixes [LOGCXX-140](https://issues.apache.org/jira/browse/LOGCXX-140).                                                                      |    |
+| ![](images/fix.gif "fix")    | XMLLayoutTestCase uses inadequate filters for 64 bit platforms Fixes [LOGCXX-139](https://issues.apache.org/jira/browse/LOGCXX-139).                                                           |    |
+| ![](images/fix.gif "fix")    | XMLLayoutTestCase output and filtered output gets overwritten Fixes [LOGCXX-138](https://issues.apache.org/jira/browse/LOGCXX-138).                                                            |    |
+| ![](images/fix.gif "fix")    | DailyRollingFileAppender not using Property options Fixes [LOGCXX-136](https://issues.apache.org/jira/browse/LOGCXX-136).                                                                      |    |
+| ![](images/update.gif "update") | Use std::string with logstream Fixes [LOGCXX-135](https://issues.apache.org/jira/browse/LOGCXX-135).                                                                                           |    |
+| ![](images/fix.gif "fix")    | FileAppender could create missing directories Fixes [LOGCXX-134](https://issues.apache.org/jira/browse/LOGCXX-134).                                                                            |    |
+| ![](images/fix.gif "fix")    | Missing parenthesis in LOG4CXX\_ASSERT Fixes [LOGCXX-133](https://issues.apache.org/jira/browse/LOGCXX-133).                                                                                   |    |
+| ![](images/fix.gif "fix")    | various segmentation faults in multithreaded application Fixes [LOGCXX-132](https://issues.apache.org/jira/browse/LOGCXX-132).                                                                 |    |
+| ![](images/fix.gif "fix")    | TimeBasedRollingPolicy is declared "abstract" Fixes [LOGCXX-131](https://issues.apache.org/jira/browse/LOGCXX-131).                                                                            |    |
+| ![](images/fix.gif "fix")    | Compile fails on gcc4.1 Fixes [LOGCXX-130](https://issues.apache.org/jira/browse/LOGCXX-130).                                                                                                  |    |
+| ![](images/fix.gif "fix")    | Asyncappender is full of race conditions (improper use of condition variables) Fixes [LOGCXX-129](https://issues.apache.org/jira/browse/LOGCXX-129).                                           |    |
+| ![](images/fix.gif "fix")    | Main build.xml not referencing "env" properly. Fixes [LOGCXX-127](https://issues.apache.org/jira/browse/LOGCXX-127).                                                                           |    |
+| ![](images/fix.gif "fix")    | std::cout stops working if log4cxx is first to output Fixes [LOGCXX-126](https://issues.apache.org/jira/browse/LOGCXX-126).                                                                    |    |
+| ![](images/update.gif "update") | L7dTestCase is stubbed out Fixes [LOGCXX-125](https://issues.apache.org/jira/browse/LOGCXX-125).                                                                                               |    |
+| ![](images/fix.gif "fix")    | wchar\_t constructor missing in class NDC Fixes [LOGCXX-124](https://issues.apache.org/jira/browse/LOGCXX-124).                                                                                |    |
+| ![](images/fix.gif "fix")    | UTF-8 build fails on Linux Fixes [LOGCXX-123](https://issues.apache.org/jira/browse/LOGCXX-123).                                                                                               |    |
+| ![](images/fix.gif "fix")    | Wrong parameter description in Patternlayout Fixes [LOGCXX-120](https://issues.apache.org/jira/browse/LOGCXX-120).                                                                             |    |
+| ![](images/fix.gif "fix")    | ndctestcase not working Fixes [LOGCXX-119](https://issues.apache.org/jira/browse/LOGCXX-119).                                                                                                  |    |
+| ![](images/fix.gif "fix")    | Hierarchy corrupts with PropertyConfigurator Fixes [LOGCXX-118](https://issues.apache.org/jira/browse/LOGCXX-118).                                                                             |    |
+| ![](images/fix.gif "fix")    | Memory leak with ThreadSpecificData on Win32 Fixes [LOGCXX-117](https://issues.apache.org/jira/browse/LOGCXX-117).                                                                             |    |
+| ![](images/fix.gif "fix")    | SVN head does not compiler with MinGW compiler Fixes [LOGCXX-116](https://issues.apache.org/jira/browse/LOGCXX-116).                                                                           |    |
+| ![](images/fix.gif "fix")    | SVN head does not compile with Borland C++ compiler Fixes [LOGCXX-115](https://issues.apache.org/jira/browse/LOGCXX-115).                                                                      |    |
+| ![](images/update.gif "update") | Upgrade APR to 1.2.2 from 1.1.0 Fixes [LOGCXX-114](https://issues.apache.org/jira/browse/LOGCXX-114).                                                                                          |    |
+| ![](images/update.gif "update") | separate apr detection m4 codes from aclocal.m4 Fixes [LOGCXX-113](https://issues.apache.org/jira/browse/LOGCXX-113).                                                                          |    |
+| ![](images/update.gif "update") | change "static" to "auto" for Transcoder::decode() decoder and CharsetDecoder::getDefaultDecoder() decoder Fixes [LOGCXX-112](https://issues.apache.org/jira/browse/LOGCXX-112).               |    |
+| ![](images/update.gif "update") | make Logger cache a LoggerRepositoryPtr instead of a "blind" pointer Fixes [LOGCXX-111](https://issues.apache.org/jira/browse/LOGCXX-111).                                                     |    |
+| ![](images/fix.gif "fix")    | try fix 64bit log4cxx\_intptr\_t Fixes [LOGCXX-110](https://issues.apache.org/jira/browse/LOGCXX-110).                                                                                         |    |
+| ![](images/fix.gif "fix")    | Can't compile log4cxx in ascii on Windows Fixes [LOGCXX-107](https://issues.apache.org/jira/browse/LOGCXX-107).                                                                                |    |
+| ![](images/fix.gif "fix")    | maxFileSize has bad type in SizeBasedTriggeringPolicy file Fixes [LOGCXX-106](https://issues.apache.org/jira/browse/LOGCXX-106).                                                               |    |
+| ![](images/fix.gif "fix")    | Infinite loop in string replacing Fixes [LOGCXX-105](https://issues.apache.org/jira/browse/LOGCXX-105).                                                                                        |    |
+| ![](images/fix.gif "fix")    | ODBCAppender::close does not check if appender is already closed Fixes [LOGCXX-104](https://issues.apache.org/jira/browse/LOGCXX-104).                                                         |    |
+| ![](images/update.gif "update") | Much of CVS HEAD seems \#if 0 out, especially ResourceBundle stuff Fixes [LOGCXX-103](https://issues.apache.org/jira/browse/LOGCXX-103).                                                       |    |
+| ![](images/fix.gif "fix")    | Fixes for ODBCAppender Fixes [LOGCXX-100](https://issues.apache.org/jira/browse/LOGCXX-100).                                                                                                   |    |
+| ![](images/fix.gif "fix")    | Gump build fails for log4cxx-ant-no-wchar-t target Fixes [LOGCXX-98](https://issues.apache.org/jira/browse/LOGCXX-98).                                                                         |    |
+| ![](images/update.gif "update") | simplesocketserver.cpp should use LOG4CXX\_STR("...") not L"..." Fixes [LOGCXX-94](https://issues.apache.org/jira/browse/LOGCXX-94).                                                           |    |
+| ![](images/update.gif "update") | Explore use of security-enhanced CRT methods Fixes [LOGCXX-88](https://issues.apache.org/jira/browse/LOGCXX-88).                                                                               |    |
+| ![](images/update.gif "update") | Remove remaining uses of Category and Priority Fixes [LOGCXX-87](https://issues.apache.org/jira/browse/LOGCXX-87).                                                                             |    |
+| ![](images/add.gif "add")    | Add TRACE level Fixes [LOGCXX-86](https://issues.apache.org/jira/browse/LOGCXX-86).                                                                                                            |    |
+| ![](images/update.gif "update") | Mac OS/X fixes and enhancements Fixes [LOGCXX-85](https://issues.apache.org/jira/browse/LOGCXX-85).                                                                                            |    |
+| ![](images/fix.gif "fix")    | Problems with stream logging in UTF8, no WCHAR\_T build Fixes [LOGCXX-84](https://issues.apache.org/jira/browse/LOGCXX-84).                                                                    |    |
+| ![](images/fix.gif "fix")    | log4cxx::Level::ERROR fails to compile when GDI enabled Fixes [LOGCXX-83](https://issues.apache.org/jira/browse/LOGCXX-83).                                                                    |    |
+| ![](images/fix.gif "fix")    | Compiling with stream.h in multiple object files errors Fixes [LOGCXX-82](https://issues.apache.org/jira/browse/LOGCXX-82).                                                                    |    |
+| ![](images/fix.gif "fix")    | SimpleDateFormat does not compile on Solaris 2.95.2 gcc Fixes [LOGCXX-81](https://issues.apache.org/jira/browse/LOGCXX-81).                                                                    |    |
+| ![](images/update.gif "update") | Migrated network appenders to APR network IO Fixes [LOGCXX-80](https://issues.apache.org/jira/browse/LOGCXX-80).                                                                               |    |
+| ![](images/update.gif "update") | configure check for apr-util Fixes [LOGCXX-79](https://issues.apache.org/jira/browse/LOGCXX-79).                                                                                               |    |
+| ![](images/fix.gif "fix")    | Static builds broken Fixes [LOGCXX-77](https://issues.apache.org/jira/browse/LOGCXX-77).                                                                                                       |    |
+| ![](images/add.gif "add")    | user.home, user.dir, java.io.tmpdir available within configuration files Fixes [LOGCXX-76](https://issues.apache.org/jira/browse/LOGCXX-76).                                                   |    |
+| ![](images/add.gif "add")    | Cygwin build Fixes [LOGCXX-75](https://issues.apache.org/jira/browse/LOGCXX-75).                                                                                                               |    |
+| ![](images/add.gif "add")    | MinGW build Fixes [LOGCXX-74](https://issues.apache.org/jira/browse/LOGCXX-74).                                                                                                                |    |
+| ![](images/fix.gif "fix")    | Not loading configuration from log4cxx.properties or log4cxx.xml Fixes [LOGCXX-73](https://issues.apache.org/jira/browse/LOGCXX-73).                                                           |    |
+| ![](images/update.gif "update") | INSTALL out of date Fixes [LOGCXX-72](https://issues.apache.org/jira/browse/LOGCXX-72).                                                                                                        |    |
+| ![](images/update.gif "update") | Update performance page on web site Fixes [LOGCXX-71](https://issues.apache.org/jira/browse/LOGCXX-71).                                                                                        |    |
+| ![](images/fix.gif "fix")    | Logic flaws in StringHelper::startsWith and StringHelper::endsWith Fixes [LOGCXX-70](https://issues.apache.org/jira/browse/LOGCXX-70).                                                         |    |
+| ![](images/fix.gif "fix")    | NTEventLogAppender always uses RPC method for logging and has inadequate error handling. Fixes [LOGCXX-67](https://issues.apache.org/jira/browse/LOGCXX-67).                                   |    |
+| ![](images/fix.gif "fix")    | SyslogAppender append method currently stubbed out Fixes [LOGCXX-66](https://issues.apache.org/jira/browse/LOGCXX-66).                                                                         |    |
+| ![](images/update.gif "update") | Migrate to APR network IO Fixes [LOGCXX-64](https://issues.apache.org/jira/browse/LOGCXX-64).                                                                                                  |    |
+| ![](images/update.gif "update") | Platform appropriate line-feed convention Fixes [LOGCXX-63](https://issues.apache.org/jira/browse/LOGCXX-63).                                                                                  |    |
+| ![](images/update.gif "update") | log4cxx 0.10.0 release Fixes [LOGCXX-62](https://issues.apache.org/jira/browse/LOGCXX-62).                                                                                                     |    |
+| ![](images/fix.gif "fix")    | XML layout can be mismatched with document encoding Fixes [LOGCXX-60](https://issues.apache.org/jira/browse/LOGCXX-60).                                                                        |    |
+| ![](images/update.gif "update") | Implement encoding support for Writer appender Fixes [LOGCXX-59](https://issues.apache.org/jira/browse/LOGCXX-59).                                                                             |    |
+| ![](images/fix.gif "fix")    | ImmediateFlush'd FileAppenders extremely slow on Windows Fixes [LOGCXX-58](https://issues.apache.org/jira/browse/LOGCXX-58).                                                                   |    |
+| ![](images/add.gif "add")    | Port log4j performance test Fixes [LOGCXX-57](https://issues.apache.org/jira/browse/LOGCXX-57).                                                                                                |    |
+| ![](images/fix.gif "fix")    | BasicConfiguration is unreliable Fixes [LOGCXX-56](https://issues.apache.org/jira/browse/LOGCXX-56).                                                                                           |    |
+| ![](images/add.gif "add")    | DailyRolling File Appender Fixes [LOGCXX-55](https://issues.apache.org/jira/browse/LOGCXX-55).                                                                                                 |    |
+| ![](images/fix.gif "fix")    | Eliminate use of boost-regex in unit tests Fixes [LOGCXX-54](https://issues.apache.org/jira/browse/LOGCXX-54).                                                                                 |    |
+| ![](images/fix.gif "fix")    | Problems compiling with MsDev 6.0 (space in paths) Fixes [LOGCXX-53](https://issues.apache.org/jira/browse/LOGCXX-53).                                                                         |    |
+| ![](images/add.gif "add")    | Migrate log4j 1.3 RollingFileAppender Fixes [LOGCXX-52](https://issues.apache.org/jira/browse/LOGCXX-52).                                                                                      |    |
+| ![](images/fix.gif "fix")    | variable name clash in macro Fixes [LOGCXX-50](https://issues.apache.org/jira/browse/LOGCXX-50).                                                                                               |    |
+| ![](images/add.gif "add")    | Move timezone specification into pattern, remove locale specification Fixes [LOGCXX-49](https://issues.apache.org/jira/browse/LOGCXX-49).                                                      |    |
+| ![](images/add.gif "add")    | Use hex representation for thread identifier Fixes [LOGCXX-48](https://issues.apache.org/jira/browse/LOGCXX-48).                                                                               |    |
+| ![](images/fix.gif "fix")    | Check headers for missing declarations and Effective C++ violations Fixes [LOGCXX-47](https://issues.apache.org/jira/browse/LOGCXX-47).                                                        |    |
+| ![](images/fix.gif "fix")    | Extra semicolon after namespace closing paren Fixes [LOGCXX-46](https://issues.apache.org/jira/browse/LOGCXX-46).                                                                              |    |
+| ![](images/fix.gif "fix")    | \_T causes error : 1048576 cannot be used as a function Fixes [LOGCXX-45](https://issues.apache.org/jira/browse/LOGCXX-45).                                                                    |    |
+| ![](images/add.gif "add")    | GUMP integation Fixes [LOGCXX-44](https://issues.apache.org/jira/browse/LOGCXX-44).                                                                                                            |    |
+| ![](images/add.gif "add")    | configure/make help needed Fixes [LOGCXX-43](https://issues.apache.org/jira/browse/LOGCXX-43).                                                                                                 |    |
+| ![](images/fix.gif "fix")    | Layout timestamp doesn't seem to adjust for daylight saving Fixes [LOGCXX-41](https://issues.apache.org/jira/browse/LOGCXX-41).                                                                |    |
+| ![](images/fix.gif "fix")    | PatternLayout does not support Java date format specifiers Fixes [LOGCXX-40](https://issues.apache.org/jira/browse/LOGCXX-40).                                                                 |    |
+| ![](Pictures/100002000000001400000014836C96AED584EDBB.gif "remove") | Remove DailyRollingFileAppender Fixes [LOGCXX-39](https://issues.apache.org/jira/browse/LOGCXX-39).                                                                                            |    |
+| ![](images/fix.gif "fix")    | Unable to build log4cxx under Borland C++ Fixes [LOGCXX-37](https://issues.apache.org/jira/browse/LOGCXX-37).                                                                                  |    |
+| ![](images/add.gif "add")    | Migrate to Apache Portable Runtime threads Fixes [LOGCXX-36](https://issues.apache.org/jira/browse/LOGCXX-36).                                                                                 |    |
+| ![](Pictures/100002000000001400000014836C96AED584EDBB.gif "remove") | Avoid use of MSXML Fixes [LOGCXX-35](https://issues.apache.org/jira/browse/LOGCXX-35).                                                                                                         |    |
+| ![](images/fix.gif "fix")    | Visual Studio 6 CVS build broken Fixes [LOGCXX-34](https://issues.apache.org/jira/browse/LOGCXX-34).                                                                                           |    |
+| ![](images/fix.gif "fix")    | log4cxx::Exception is not derived from std::exception Fixes [LOGCXX-33](https://issues.apache.org/jira/browse/LOGCXX-33).                                                                      |    |
+| ![](images/fix.gif "fix")    | Missing copy constructors and assignment operators Fixes [LOGCXX-32](https://issues.apache.org/jira/browse/LOGCXX-32).                                                                         |    |
+| ![](images/fix.gif "fix")    | Missing const qualifiers, Exception::getMessage() in particular. Fixes [LOGCXX-31](https://issues.apache.org/jira/browse/LOGCXX-31).                                                           |    |
+| ![](images/fix.gif "fix")    | StringTokenizer uses evil strtok and wcstok functions Fixes [LOGCXX-30](https://issues.apache.org/jira/browse/LOGCXX-30).                                                                      |    |
+| ![](images/fix.gif "fix")    | Appender attributes are not passed passed to setOption correctly. Fixes [LOGCXX-29](https://issues.apache.org/jira/browse/LOGCXX-29).                                                          |    |
+| ![](images/fix.gif "fix")    | Appender threshold cannot be set in configuration files Fixes [LOGCXX-28](https://issues.apache.org/jira/browse/LOGCXX-28).                                                                    |    |
+| ![](images/fix.gif "fix")    | Appender threshold cannot be set in configuration files Fixes [LOGCXX-27](https://issues.apache.org/jira/browse/LOGCXX-27).                                                                    |    |
+| ![](images/fix.gif "fix")    | Default initialization is broken Fixes [LOGCXX-26](https://issues.apache.org/jira/browse/LOGCXX-26).                                                                                           |    |
+| ![](images/add.gif "add")    | Add Ant+cpptasks build file Fixes [LOGCXX-25](https://issues.apache.org/jira/browse/LOGCXX-25).                                                                                                |    |
+| ![](images/fix.gif "fix")    | Class and module name not available in LogEvent Fixes [LOGCXX-24](https://issues.apache.org/jira/browse/LOGCXX-24).                                                                            |    |
+| ![](images/fix.gif "fix")    | Unit tests have become stale Fixes [LOGCXX-23](https://issues.apache.org/jira/browse/LOGCXX-23).                                                                                               |    |
+| ![](images/fix.gif "fix")    | Backslashes in filenames in XML config of FileAppender broken Fixes [LOGCXX-22](https://issues.apache.org/jira/browse/LOGCXX-22).                                                              |    |
+| ![](images/add.gif "add")    | Add check that libxml2 not libxml has been included Fixes [LOGCXX-21](https://issues.apache.org/jira/browse/LOGCXX-21).                                                                        |    |
+| ![](images/add.gif "add")    | Add .cvsignore's to ignore generated files Fixes [LOGCXX-19](https://issues.apache.org/jira/browse/LOGCXX-19).                                                                                 |    |
+| ![](images/add.gif "add")    | LoggerStream Feature Fixes [LOGCXX-18](https://issues.apache.org/jira/browse/LOGCXX-18).                                                                                                       |    |
+| ![](images/update.gif "update") | Use of non reentrant time functions Fixes [LOGCXX-17](https://issues.apache.org/jira/browse/LOGCXX-17).                                                                                        |    |
+| ![](images/fix.gif "fix")    | Misleading statements in Introduction to log4cxx Fixes [LOGCXX-16](https://issues.apache.org/jira/browse/LOGCXX-16).                                                                           |    |
+| ![](images/fix.gif "fix")    | PatternLayout don't use locale time zone,it's use GMT tome zone Fixes [LOGCXX-15](https://issues.apache.org/jira/browse/LOGCXX-15).                                                            |    |
+| ![](images/add.gif "add")    | add -Wall to compile log4cxx will get many warning Fixes [LOGCXX-14](https://issues.apache.org/jira/browse/LOGCXX-14).                                                                         |    |
+| ![](images/add.gif "add")    | Add branch optimization hint to LOG4CXX\_DEBUG macro Fixes [LOGCXX-13](https://issues.apache.org/jira/browse/LOGCXX-13).                                                                       |    |
+| ![](images/fix.gif "fix")    | the threshold of ApenderSkeleton can not be set by calling setOption. Fixes [LOGCXX-12](https://issues.apache.org/jira/browse/LOGCXX-12).                                                      |    |
+| ![](images/fix.gif "fix")    | Timezone may have side-effects Fixes [LOGCXX-11](https://issues.apache.org/jira/browse/LOGCXX-11).                                                                                             |    |
+| ![](images/fix.gif "fix")    | Conflicting definitions of tchar.h/simulatenous Unicode+MBCS Fixes [LOGCXX-10](https://issues.apache.org/jira/browse/LOGCXX-10).                                                               |    |
+| ![](images/fix.gif "fix")    | Compilation problems using VC5 or VC6 with later Platform SDKs Fixes [LOGCXX-8](https://issues.apache.org/jira/browse/LOGCXX-8).                                                               |    |
+| ![](images/fix.gif "fix")    | SocketAppender binary format not compatible with Chainsaw Fixes [LOGCXX-7](https://issues.apache.org/jira/browse/LOGCXX-7).                                                                    |    |
+| ![](images/add.gif "add")    | Win32 OutputDebugString Fixes [LOGCXX-6](https://issues.apache.org/jira/browse/LOGCXX-6).                                                                                                      |    |
+| ![](images/fix.gif "fix")    | Preprocessor macro WIN32 used instead of \_WIN32 Fixes [LOGCXX-5](https://issues.apache.org/jira/browse/LOGCXX-5).                                                                             |    |
+| ![](images/fix.gif "fix")    | initialization not working on many OS's Fixes [LOGCXX-4](https://issues.apache.org/jira/browse/LOGCXX-4).                                                                                      |    |
+| ![](images/fix.gif "fix")    | Missing \#else Fixes [LOGCXX-3](https://issues.apache.org/jira/browse/LOGCXX-3).                                                                                                               |    |
+| ![](images/fix.gif "fix")    | logger.h includes config.h Fixes [LOGCXX-2](https://issues.apache.org/jira/browse/LOGCXX-2).                                                                                                   |    |
+
+<a name="0.9.7"/>
+### Release 0.9.7 - 2004-05-10
+
+|                                                                  |                                                                                                                                                     |    |
+| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
+| Type                                                             | Changes                                                                                                                                             | By |
+| ![](images/fix.gif "fix") | Fixed examples source code in the "Short introduction to log4cxx".                                                                                  |    |
+| ![](images/fix.gif "fix") | Fixed, in the renaming algorithm of RollingFileAppender and DailyRollingFileAppender, a problem specific to Unicode.                                |    |
+| ![](images/fix.gif "fix") | Fixed conflict with Windows macros "min" and "max", by renaming StrictMath::min and StrictMath::max to StrictMath::minimum and StrictMath::maximum. |    |
+| ![](images/add.gif "add") | Port to HPUX 11.0.                                                                                                                                  |    |
+| ![](images/fix.gif "fix") | Fixed segmentation fault in PropertyConfigurator.                                                                                                   |    |
+| ![](images/add.gif "add") | Port to Solaris.                                                                                                                                    |    |
+| ![](images/fix.gif "fix") | Fixed MutexException thrown while destroying RollingFileAppender.                                                                                   |    |
+| ![](images/fix.gif "fix") | Logging macros can be used without explicity declaring the use of log4cxx namespace.                                                                |    |
+| ![](images/fix.gif "fix") | Fixed static library unresolved externals for msvc 6 and 7.1                                                                                        |    |
+
+<a name="0.9.6"/>
+### Release 0.9.6 - 2004-04-11
+
+|                                                                     |                                                                                                         |    |
+| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -- |
+| Type                                                                | Changes                                                                                                 | By |
+| ![](images/update.gif "update") | Timezone management has been optimized through the class TimeZone                                       |    |
+| ![](images/update.gif "update") | Inter-thread synchronization and reference counting has been optimized                                  |    |
+| ![](images/update.gif "update") | Reference counting now uses gcc atomic functions (bug 929078)                                           |    |
+| ![](images/update.gif "update") | Use of StringBuffer has been optimized.                                                                 |    |
+| ![](images/add.gif "add")    | Support of localisation throug resourceBundles                                                          |    |
+| ![](images/update.gif "update") | SyslogAppender now uses the system function 'syslog' to log on the local host. (only for POSIX systems) |    |
+| ![](images/add.gif "add")    | Added TimeZone configuration to PatternLayout (bug 912563)                                              |    |
+| ![](images/add.gif "add")    | Support of the DailyRollingFileAppender (feature request 842765)                                        |    |
+
+<a name="0.9.5"/>
+### Release 0.9.5 - 2004-02-04
+
+|                                                                  |                                                                                                                            |    |
+| ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -- |
+| Type                                                             | Changes                                                                                                                    | By |
+| ![](images/add.gif "add") | Port of log4j Jnuit tests with Cppunit and Boost Regex.                                                                    |    |
+| ![](images/add.gif "add") | Added explicit exports for MSDEV 6 and MSDEV 7 (no further need of .def files)                                             |    |
+| ![](images/add.gif "add") | Custom levels can be configured through the DOMConfigurator and PropertyConfigurator classes (Level inherites from Object) |    |
+| ![](images/add.gif "add") | Added a reference counter to LoggingEvent to avoid useless copies (LoggingEvent inherites from Object)                     |    |
+| ![](images/add.gif "add") | The file log4j.xml as well as the file log4j.properties are now search for, in log4cxx initialization.                     |    |
+| ![](images/add.gif "add") | The root logger can be assigned the "OFF" level.                                                                           |    |
+| ![](images/add.gif "add") | Added MSVC6 project missing files mutext.cpp and condition.cpp (bug 847397)                                                |    |
+| ![](images/fix.gif "fix") | condition.cpp now compiles with MSVC6 (bug 847417)                                                                         |    |
+| ![](images/fix.gif "fix") | fixed pure virtual function call in PropertyConfigurator::configureAndWatch (bug 848521)                                   |    |
+| ![](images/fix.gif "fix") | XMLAppender now displays correct timestamp with MSVC 6 (bug 852836)                                                        |    |
+| ![](images/add.gif "add") | SRLPORT 4.6 support.                                                                                                       |    |
+| ![](images/fix.gif "fix") | Fixed an infinite loop in class Properties.                                                                                |    |
+| ![](images/fix.gif "fix") | Fixed compilations problems with unicode.                                                                                  |    |
+| ![](images/fix.gif "fix") | Fixed SocketAppender bug concerning MDC and NDC.                                                                           |    |
+
+<a name="0.9.4"/>
+### Release 0.9.4 - 2003-10-25
+
+|                                                                     |                                                           |    |
+| ------------------------------------------------------------------- | --------------------------------------------------------- | -- |
+| Type                                                                | Changes                                                   | By |
+| ![](images/update.gif "update") | StringBuffer has been optimized.                          |    |
+| ![](images/fix.gif "fix")    | Fixed miscellaneous threading problems.                   |    |
+| ![](images/add.gif "add")    | Added TimeZone support in PatternLayout (bug 796894)      |    |
+| ![](images/fix.gif "fix")    | Fixed threading configuration problems (bug 809125)       |    |
+| ![](images/fix.gif "fix")    | Fixed miscellaneous MSVC and cygwin compilation problems. |    |
+
+<a name="0.9.3"/>
+### Release 0.9.3 - 2003-09-19
+
+|                                                                     |                                                                                 |    |
+| ------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -- |
+| Type                                                                | Changes                                                                         | By |
+| ![](images/update.gif "update") | Changed tstring to log4cxx::String and tostringstream to log4cxx::StringBuffer. |    |
+| ![](images/fix.gif "fix")    | Fixed MSVC 2003 compilation erros and warnings.                                 |    |
+| ![](images/add.gif "add")    | Added helpers for NDC and MDC.                                                  |    |
+| ![](images/add.gif "add")    | Added TimeZone support in TTCCLayout.                                           |    |
+| ![](images/fix.gif "fix")    | Fixed compilation problems with logger macros (LOG4CXX\_...)                    |    |
+| ![](images/fix.gif "fix")    | Fixed milliseconds formatting problem with MSVC 6.0 and 2003                    |    |
+| ![](images/fix.gif "fix")    | Fixed AsyncAppender crash                                                       |    |
+| ![](images/add.gif "add")    | Added new tests                                                                 |    |
+| ![](images/add.gif "add")    | Added benchmarks                                                                |    |
+
+<a name="0.9.2"/>
+### Release 0.9.2 - 2003-08-10
+
+|                                                                     |                                                                               |    |
+| ------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -- |
+| Type                                                                | Changes                                                                       | By |
+| ![](images/fix.gif "fix")    | Fixed FreeBSD compilation problem with pthread mutex (class CriticalSection). |    |
+| ![](images/fix.gif "fix")    | Fixed milliseconds formatting problem (class DateFormat).                     |    |
+| ![](images/add.gif "add")    | Long events (\> 1024 chars) are now supported in the class XMLSocketAppender. |    |
+| ![](images/update.gif "update") | Carriage returns have been normalized in the class XMLLayout.                 |    |
+
+<a name="0.9.1"/>
+### Release 0.9.1 - 2003-08-06
+
+|                                                                     |                                                              |    |
+| ------------------------------------------------------------------- | ------------------------------------------------------------ | -- |
+| Type                                                                | Changes                                                      | By |
+| ![](images/fix.gif "fix")    | Fixed deadlock problems in classes Logger and AsyncAppender. |    |
+| ![](images/fix.gif "fix")    | Fixed MSVC 6.0 compilation problems.                         |    |
+| ![](images/add.gif "add")    | Added MSVC 6.0 static libraty project.                       |    |
+| ![](images/update.gif "update") | Default configuration for the SMTP options is "no".          |    |
+
+<a name="0.9.0"/>
+### Release 0.9.0 - 2003-08-06
+
+|                                                                  |                                                                        |    |
+| ---------------------------------------------------------------- | ---------------------------------------------------------------------- | -- |
+| Type                                                             | Changes                                                                | By |
+| ![](images/add.gif "add") | Added ODBCAppender (matching log4j JDBCAppender)                       |    |
+| ![](images/add.gif "add") | Added SyslogAppender                                                   |    |
+| ![](images/add.gif "add") | Added SMTPAppender (only for Linux/FreeBSD)                            |    |
+| ![](images/add.gif "add") | Added BasicConfigurator                                                |    |
+| ![](images/add.gif "add") | Added a FileWatchDog in PropertyConfigurator and DOMConfigurator       |    |
+| ![](images/add.gif "add") | Possibility to load a custom LoggerFactory through the DOMConfigurator |    |
+| ![](images/add.gif "add") | Changed time precision from seconds to milliseconds                    |    |
+| ![](images/add.gif "add") | Added MSVC 6.0 'Unicode Debug' and 'Unicode Release' targets           |    |
+| ![](images/add.gif "add") | Added Java like System class.                                          |    |
+
+<a name="0.1.1"/>
+### Release 0.1.1 - 2003-07-09
+
+|                                                                  |                                                                     |    |
+| ---------------------------------------------------------------- | ------------------------------------------------------------------- | -- |
+| Type                                                             | Changes                                                             | By |
+| ![](images/fix.gif "fix") | Fixed MSVC 6.0 compilation problems concerning the 'Release' target |    |
+| ![](images/add.gif "add") | Added MSVC 6.0 tests projects                                       |    |
+
+<a name="0.1.0"/>
+### Release 0.1.0 - 2003-07-08
+
+|                                                                  |                                                                                                                                                            |    |
+| ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
+| Type                                                             | Changes                                                                                                                                                    | By |
+| ![](images/add.gif "add") | FreeBSD Autotools/Compilation support                                                                                                                      |    |
+| ![](images/fix.gif "fix") | Fixed TelnetAppender crash when a socket bind exception occured.                                                                                           |    |
+| ![](images/add.gif "add") | Added log4j DTD support to XMLLayout and DOMConfigurator                                                                                                   |    |
+| ![](images/add.gif "add") | Can now send events in XML format over TCP (class XMLSocketAppender) for the log4j Chainsaw UI                                                             |    |
+| ![](images/add.gif "add") | Now compiles with 'configure --enable-unicode' (UTF16 Unicode support)                                                                                     |    |
+| ![](images/add.gif "add") | Added Java like Properties class. It's a helper for the PropertyConfigurator                                                                               |    |
+| ![](images/add.gif "add") | Added Java like objects with dynamic cast and instanciation. Custom objects can be configured through the DOMConfigurator and PropertyConfigurator classes |    |
+| ![](images/add.gif "add") | Port of the PropertyConfigurator class                                                                                                                     |    |
+| ![](images/add.gif "add") | Port of the "Map Diagnostic Context" (MDC) class                                                                                                           |    |
+| ![](images/add.gif "add") | Added 13 tests (try make check)                                                                                                                            |    |
+
+<a name="0.0.1"/>
+### Release 0.0.1 - 2003-05-31
+
+|                                                                  |                                                                                                                                                      |    |
+| ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
+| Type                                                             | Changes                                                                                                                                              | By |
+| ![](images/add.gif "add") | Loggers, Hierarchy, Filters, Appenders, Layouts, NDC                                                                                                 |    |
+| ![](images/add.gif "add") | Appenders: AsyncAppender, ConsoleAppender, FileAppender, NTEventLogAppender, RollingFileAppender, SocketAppender, SocketHubAappender, TelnetAppender |    |
+| ![](images/add.gif "add") | Layouts: HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout, XMLLayout                                                                              |    |
+| ![](images/add.gif "add") | Filters: DenyAllFilter, LevelMatchFilter, LevelRangeFilter, StringMatchFilter                                                                        |    |
+| ![](images/add.gif "add") | Configurators: DOMConfigurator                                                                                                                       |    |
diff --git a/src/site/markdown/community/issue-tracking.md b/src/site/markdown/community/issue-tracking.md
new file mode 100644
index 0000000..ae2c1b3
--- /dev/null
+++ b/src/site/markdown/community/issue-tracking.md
@@ -0,0 +1,52 @@
+Issue Tracking {#issue-tracking}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+# Overview
+
+This project uses [JIRA](https://www.atlassian.com/software/jira), a J2EE-based issue tracking
+and project management application.
+
+# Issue Tracking
+
+*Bugs* and *feature requests* should be submitted to the following issue tracking system
+for this project.
+
+https://issues.apache.org/jira/browse/LOGCXX
+
+*Please don't just open bugs only because things don't work for you*, some issues simply
+aren't bugs in the code base of the project or it's build tools, but may have a lot of
+different other reasons. If things don't work for you and you need some help, please subscribe
+to the [users mailing list] and describe
+the issue you have, the more detailed the better. The mailing list is a far better place to
+discuss things than JIRA, besides that there are more users than developers of the project and
+issues created in JIRA are only forwarded to the latter. There's always the chance to create an
+issue in JIRA later, hopefully with a specific explanation of the problem and even a solution
+already.
+
+As a rule of thumb, if you already digged through the code and found a problem in it or its
+build tools, feel free to directly create a bug in [JIRA](https://issues.apache.org/jira/browse/LOGCXX).
+But if things really only don't work and you don't have any clue why, please use the [users mailing list]
+instead.
+
+Thanks!
+
+[users mailing list]:@ref mailing-lists
diff --git a/src/site/markdown/community/mailing-lists.md b/src/site/markdown/community/mailing-lists.md
new file mode 100644
index 0000000..81b8552
--- /dev/null
+++ b/src/site/markdown/community/mailing-lists.md
@@ -0,0 +1,38 @@
+Mailing Lists {#mailing-lists}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+These are the mailing lists that have been established for
+this project. For each list, there is a subscribe, unsubscribe, and an
+archive link.
+|                                              |                                                               |                                                                   |                                                |                                                                                            |                                                                                 |
+| -------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- |
+| Name                                         | Subscribe                                                     | Unsubscribe                                                       | Post                                           | Archive                                                                                    | Other Archives                                                                  |
+| log4cxx usage                                | [Subscribe](mailto:log4cxx-user-subscribe@logging.apache.org) | [Unsubscribe](mailto:log4cxx-user-unsubscribe@logging.apache.org) | [Post](mailto:log4cxx-user@logging.apache.org) | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/logging-log4cxx-user/) | [markmail.org](http://markmail.org/search/list:org.apache.logging.log4cxx-user) |
+| \-                                           | \-                                                            | \-                                                                | \-                                             | \-                                                                                         | [marc.info](http://marc.info/?l=log4cxx-user)                                   |
+| \-                                           | \-                                                            | \-                                                                | \-                                             | \-                                                                                         | [dir.gmane.org](http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.user)    |
+| log4cxx development                          | [Subscribe](mailto:dev-subscribe@logging.apache.org)          | [Unsubscribe](mailto:dev-unsubscribe@logging.apache.org)          | [Post](mailto:dev@logging.apache.org)          | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/logging-dev/)          | [markmail.org](http://markmail.org/search/list:org.apache.logging.dev)          |
+| \-                                           | \-                                                            | \-                                                                | \-                                             | \-                                                                                         | [marc.info](http://marc.info/?l=dev)                                            |
+| \-                                           | \-                                                            | \-                                                                | \-                                             | \-                                                                                         | [dir.gmane.org](http://dir.gmane.org/gmane.comp.apache.logging.devel)           |
+| Old log4cxx development (NOT USED ANYMORE\!) | [Subscribe](mailto:log4cxx-dev-subscribe@logging.apache.org)  | [Unsubscribe](mailto:log4cxx-dev-unsubscribe@logging.apache.org)  | [Post](mailto:log4cxx-dev@logging.apache.org)  | [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/)  | [markmail.org](http://markmail.org/search/list:org.apache.logging.log4cxx-dev)  |
+| \-                                           | \-                                                            | \-                                                                | \-                                             | \-                                                                                         | [marc.info](http://marc.info/?l=log4cxx-dev)                                    |
+| \-                                           | \-                                                            | \-                                                                | \-                                             | \-                                                                                         | [dir.gmane.org](http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.devel)   |
+
diff --git a/src/site/markdown/configuration-samples.md b/src/site/markdown/configuration-samples.md
new file mode 100644
index 0000000..611ac81
--- /dev/null
+++ b/src/site/markdown/configuration-samples.md
@@ -0,0 +1,214 @@
+Configuration Samples {#configuration-samples}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+The following snippets show various ways of configuring log4cxx.
+
+[TOC]
+
+# Patterns {#patterns}
+
+The basic way of outputing messages is by using a [PatternLayout](@ref log4cxx.PatternLayout),
+and then sending the messages to stderr/stdout/file.  The following
+examples show how you might configure the PatternLayout in order to
+achieve the results shown.
+
+Each example has two blocks of code: the layout for the PatternLayout,
+and a sample output message.
+
+## Pattern 1 {#pattern1}
+
+This pattern contains the date in an ISO-8601 format(without fractional seconds),
+followed by the logger name, the level, and then the message.
+
+~~~
+[%d{yyyy-MM-dd HH:mm:ss}] %c %-5p - %m%n
+~~~
+
+~~~
+[2020-12-24 15:31:46] root INFO  - Hello there!
+~~~
+
+## Pattern 2 {#pattern2}
+
+Similar to Pattern 1, except using ISO-8601 with fractional seconds
+
+~~~
+[%d] %c %-5p - %m%n
+~~~
+
+~~~
+[2020-12-24 15:35:39,225] root INFO  - Hello there!
+~~~
+
+## Pattern 3 {#pattern3}
+
+Prints out the number of milliseconds since the start of the application,
+followed by the level(5 character width), followed by the logger name
+(20 character width), followed by the message.
+
+~~~
+%r %-5p %-20c %m%n
+~~~
+
+~~~
+0 INFO  root                 Hello there!
+~~~
+
+# XML Files {#xmlfiles}
+
+One way of configuring log4cxx is with XML files.  The following are some examples
+on various ways of using an XML file to configure the logging.
+
+## XML Example 1 {#xml-example-1}
+
+This simple example simply writes messages to stdout.
+If you want to send messages to stderr instead, simply change the 'Target' value
+to `System.err`.
+
+~~~{.xml}
+<?xml version="1.0" encoding="UTF-8" ?>
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
+    <param name="Target" value="System.out"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="%m%n"/>
+    </layout>
+  </appender>
+
+  <root>
+     <priority value="info" />
+     <appender-ref ref="ConsoleAppender"/>
+  </root>
+
+</log4j:configuration>
+~~~
+
+Sample output:
+~~~
+Hello there!
+~~~
+
+## XML Example 2 {#xml-example-2}
+
+This example sends data to both stdout, as well as to a file.  In this case,
+the file will be in our working directory.  The pattern has also been updated
+to match with pattern example 1
+
+~~~{.xml}
+<?xml version="1.0" encoding="UTF-8" ?>
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
+    <param name="Target" value="System.out"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %c %-5p - %m%n"/>
+    </layout>
+  </appender>
+
+  <appender name="FileAppender" class="org.apache.log4j.FileAppender">
+    <param name="file" value="example.log" />
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %c %-5p - %m%n" />
+    </layout>
+  </appender>
+
+  <root>
+     <priority value="info" />
+     <appender-ref ref="ConsoleAppender"/>
+     <appender-ref ref="FileAppender"/>
+  </root>
+
+</log4j:configuration>
+~~~
+
+Sample output:
+~~~
+[2020-12-24 15:57:35] root INFO  - Hello there!
+~~~
+
+## XML Example 3 {#xml-example-3}
+
+This example shows how you can configure logging for a particular category.
+
+Assume that our loggers are in our code as such:
+
+~~~{.cpp}
+	log4cxx::LoggerPtr root = log4cxx::Logger::getRootLogger();
+	log4cxx::LoggerPtr com  = log4cxx::Logger::getLogger( "com" );
+	log4cxx::LoggerPtr com_example = log4cxx::Logger::getLogger( "com.example" );
+
+	LOG4CXX_INFO( root, "Hello there!" );
+	LOG4CXX_DEBUG( com, "com logger debug" );
+	LOG4CXX_DEBUG( com_example, "com.example debug message" );
+	LOG4CXX_TRACE( com, "com debug message" );
+	LOG4CXX_TRACE( com_example, "com.example trace message" );
+~~~
+
+For this configuration, we have set any logger that is at the `com` level or below
+to be debug.  However, we have also set the logger `com.example` to have a more
+verbose `trace` level to see more information from that particular logger.
+
+~~~{.xml}
+<?xml version="1.0" encoding="UTF-8" ?>
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
+    <param name="Target" value="System.out"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %c %-5p - %m%n"/>
+    </layout>
+  </appender>
+
+  <appender name="FileAppender" class="org.apache.log4j.FileAppender">
+    <param name="file" value="example.log" />
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %c %-5p - %m%n" />
+    </layout>
+  </appender>
+
+  <root>
+     <priority value="info" />
+     <appender-ref ref="ConsoleAppender"/>
+     <appender-ref ref="FileAppender"/>
+  </root>
+
+  <logger name="com" >
+     <priority value="debug"/>
+  </logger>
+
+  <logger name="com.example" >
+     <priority value="trace"/>
+  </logger>
+
+</log4j:configuration>
+~~~
+
+Sample output:
+
+~~~
+[2020-12-24 16:05:48] root INFO  - Hello there!
+[2020-12-24 16:05:48] com DEBUG - com logger debug
+[2020-12-24 16:05:48] com.example DEBUG - com.example debug message
+[2020-12-24 16:05:48] com.example TRACE - com.example trace message
+~~~
diff --git a/src/site/apt/building/autotools.apt b/src/site/markdown/development/autotools.apt
similarity index 100%
rename from src/site/apt/building/autotools.apt
rename to src/site/markdown/development/autotools.apt
diff --git a/src/site/markdown/development/build-cmake.md b/src/site/markdown/development/build-cmake.md
new file mode 100644
index 0000000..fc7e43f
--- /dev/null
+++ b/src/site/markdown/development/build-cmake.md
@@ -0,0 +1,140 @@
+Build with CMake {#build-cmake}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+# Building Apache log4cxx with CMake
+
+* Quick start:
+
+  Building and testing log4cxx on a Unix platform with packaged APR and APR-Util.
+
+  Make sure cmake 3.13+, g++ and make are available, install or
+  build apr 1.x, apr-util 1.x, gzip and zip.
+
+~~~
+$ apt-get install build-essential libapr1-dev libaprutil1-dev gzip zip
+$ cd apache-log4cxx-x.x.x
+$ mkdir build
+$ cd build
+$ ccmake ..
+$ make
+$ sudo make install
+~~~
+
+* ccmake options
+
+| Option                 | Usage |
+|------------------------|-------|
+| -DLOG4CXX_WCHAR_T=no   | Enable wchar_t API methods, choice of yes (default), no.                                    |
+| -DLOG4CXX_UNICHAR=yes  | Enable UniChar API methods, choice of yes, no (default).                                    |
+| -DLOG4CXX_CFSTRING=yes | Enable CFString API methods, requires Mac OS/X CoreFoundation, choice of yes, no (default). |
+| -DBUILD_TESTING=off    | Do not build tests.  Tests are built by default                                             |
+| -DBUILD_SHARED_LIBS=off| Build log4cxx as a static library. A dynamically linked log4cxx library is built by default. Any compilation unit that includes a log4cxx header must define LOG4CXX_STATIC.             |
+| -DAPU_STATIC=yes       | Link to the APR-Util static library. By default, the log4cxx shared library is linked to the APR-Util shared library. If BUILD_SHARED_LIBS=off, the static APR-Util library is used.     |
+| -DAPR_STATIC=yes       | Link to the APR static library. By default, the log4cxx shared library is linked to the APR shared library. If BUILD_SHARED_LIBS=off, the static APR library is always used.        |
+|-DLOG4CXX_TEST_PROGRAM_PATH=path| An extra path to prepend to the PATH for test programs.  Log4cxx requires zip, sed, and grep on the PATH in order for the tests to work properly.                          |
+
+Building and testing log4cxx on a Microsoft Windows with APR, Expat and APR-Util built from source
+extracted into apr-1.7.0, libexpat(from github) and apr-util-1.6.1 in %HOMEPATH%\Libraries.
+
+~~~
+$ cd %HOMEPATH%\Libraries
+$ cmake -S libexpat\expat -B buildtrees\expat -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
+$ cmake --build buildtrees\expat --target install --config Release
+$ cmake -S apr-1.7.0 -B buildtrees\apr -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
+$ cmake --build buildtrees\apr --target install --config Release
+$ set CMAKE_PREFIX_PATH=%HOMEPATH%\Libraries\installed
+$ cmake -S apr-util-1.6.1 -B buildtrees\apr-util -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
+$ cmake --build buildtrees\apr-util --target install --config Release
+$ cmake -S apache-log4cxx-x.x.x -B buildtrees\log4cxx -DCMAKE_INSTALL_PREFIX=%HOMEPATH%\Libraries\installed
+$ cmake --build buildtrees\log4cxx --target install --config Release
+~~~
+
+# Platform specific notes:
+
+## Mac OS/X:
+
+APR and APR-Util are provided by the platform in Mac OS/X 10.5 and iODBC in 10.4.
+
+cmake can be installed by typing "brew install cmake".
+
+## Debian:
+
+APR, APR-Util, openssl, gzip and zip may be installed by:
+
+~~~
+$ sudo apt-get install libssl-dev libapr1-dev libaprutil1-dev gzip zip
+~~~
+
+CMake can be built from source by typing:
+
+~~~
+$ wget https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4.tar.gz
+$ tar xf cmake-3.16.4.tar.gz
+$ cd cmake-3.16.4
+$ ./bootstrap
+$ make
+$ sudo make install
+~~~
+
+## FreeBSD:
+
+APR, APR-Util, gzip and zip may be installed from the ports collection by:
+
+~~~
+$ cd /usr/ports/archivers/zip
+$ make
+$ make install
+$ cd /usr/ports/archivers/gzip
+$ make
+$ make install
+$ cd /usr/ports/devel/apr
+$ make
+$ make install
+~~~
+
+## Windows:
+
+The easiest way to get dependencies installed is to use vcpkg(for APR/expat), and msys2 for the command-line
+utilities(zip, grep, sed).
+
+Msys2 can be downloaded from: https://www.msys2.org/
+By default, this will be installed under C:\msys2, so you can add that to the build PATH by setting
+LOG4CXX_TEST_PROGRAM_PATH=C:/msys64/usr/bin in your build settings.
+
+For vcpkg, follow the directions at https://github.com/microsoft/vcpkg#quick-start-windows and then install
+the dependencies needed using `vcpkg install apr apr-util`.
+
+# Using log4cxx in a CMake build
+
+A log4cxxConfig.cmake and log4cxxConfigVersion.cmake is installed to allow use of find_package()
+in your CMakeLists.txt.
+
+Below are example cmake commands that compile and link "myApplication" with log4cxx.
+
+~~~
+find_package(log4cxx 0.11)
+add_executable(myApplication myMain.cpp)
+target_include_directories(myApplication PRIVATE $<TARGET_PROPERTY:log4cxx,INTERFACE_INCLUDE_DIRECTORIES>)
+target_link_libraries( myApplication PRIVATE log4cxx)
+~~~
+
diff --git a/src/site/markdown/development/build-vcpkg.md b/src/site/markdown/development/build-vcpkg.md
new file mode 100644
index 0000000..1dfba51
--- /dev/null
+++ b/src/site/markdown/development/build-vcpkg.md
@@ -0,0 +1,56 @@
+Building with vcpkg {#build-vcpkg}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+# Building Apache log4cxx with vcpkg
+
+## Preparation
+
+Windows:
+~~~
+> git clone https://github.com/Microsoft/vcpkg.git
+> cd vcpkg
+> .\bootstrap-vcpkg.bat
+# Then, to hook up user-wide integration, run (note: requires admin on first use)
+> .\vcpkg integrate install
+~~~
+
+Linux:
+~~~
+$ git clone https://github.com/Microsoft/vcpkg.git
+$ cd vcpkg
+$ ./bootstrap-vcpkg.sh
+$ ./vcpkg integrate install
+~~~
+
+## Building log4cxx.dll
+
+Windows:
+~~~
+PS> .\vcpkg install log4cxx
+~~~
+
+Linux: 
+~~~
+$ ./vcpkg install log4cxx
+~~~
+
diff --git a/src/site/markdown/development/building.md b/src/site/markdown/development/building.md
new file mode 100644
index 0000000..b348e39
--- /dev/null
+++ b/src/site/markdown/development/building.md
@@ -0,0 +1,51 @@
+Building {#building}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+# Building Apache log4cxx
+
+The project supports different build tools on different platforms, have a
+look at the menu to find the platform you need. If your environment is not
+covered already, feel free to ask about it on one of the Mailing Lists or
+leave a bug in our Issue Tracker. In this case it would be very helpful of
+course if you could already provide some patches to support your environment
+or at least provide some technical details about the build tools, compiler
+etc. you use.
+
+## Covered by the team
+
+The following list provides an overview about the environments some of the
+team members have access to and therefore normally should work out of the box
+or at least were used sometimes in the past. This list by no means tells
+something about how good the support on each platform is, it's just a guide.
+
+The following platforms/compilers are expected to work correctly:
+
+* Windows 10(32 and 64-bit) - MSVC
+* Windows 10(32-bit) - Embarcadero C++ Builder XE 4
+* Debian 10(32 and 64-bit) - gcc 8.3.0, clang-7
+* Ubuntu 20.04(32 and 64-bit) - gcc, clang
+* Mac OSX - clang
+
+Various Linux distributions already have log4cxx as part of their package
+managers - consult the documentation for your distribution to determine
+if a package already exists.
diff --git a/src/site/markdown/dependencies.md b/src/site/markdown/development/dependencies.md
similarity index 94%
rename from src/site/markdown/dependencies.md
rename to src/site/markdown/development/dependencies.md
index 49a21ec..5cfe28f 100644
--- a/src/site/markdown/dependencies.md
+++ b/src/site/markdown/development/dependencies.md
@@ -1,3 +1,9 @@
+Dependencies {#dependencies}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
@@ -15,6 +21,7 @@
  limitations under the License.
 -->
 
+
 # LOG4CXX Dependencies
 
 log4cxx requires the following software to build and/or run correctly:
diff --git a/src/site/apt/building/maven.apt b/src/site/markdown/development/maven.apt
similarity index 100%
rename from src/site/apt/building/maven.apt
rename to src/site/markdown/development/maven.apt
diff --git a/src/site/markdown/development/source-repository.md b/src/site/markdown/development/source-repository.md
new file mode 100644
index 0000000..879f02b
--- /dev/null
+++ b/src/site/markdown/development/source-repository.md
@@ -0,0 +1,48 @@
+Source Repository {#source-repository}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+# Overview
+
+Log4cxx uses GIT to manage its source code. Instructions on GIT use can be found at http://git-scm.com/documentation.
+
+## Web Access
+
+The default repository can be seen on gitbox at:
+
+* https://gitbox.apache.org/repos/asf?p=logging-log4cxx.git
+
+This repository is mirrored to GitHub at the following location:
+
+* https://github.com/apache/logging-log4cxx
+
+## Anonymous access
+
+The source can be checked out anonymously from GIT with this command (See http://git-scm.com/docs/git-clone):
+
+~~~
+    $ git clone http://gitbox.apache.org/repos/asf/logging-log4cxx.git
+~~~
+
+## Pull Requests
+
+Pull requests may be submitted through GitHub.
diff --git a/src/site/markdown/download.md.in b/src/site/markdown/download.md.in
new file mode 100644
index 0000000..cb2d4c9
--- /dev/null
+++ b/src/site/markdown/download.md.in
@@ -0,0 +1,64 @@
+Download {#download}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+# Download Apache log4cxx ${LOG4CXX_RELEASE_VERSION}
+
+  Apache log4cxx ${LOG4CXX_RELEASE_VERSION} is distributed under the [Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html).
+
+  The link in the Mirrors column should display a list of available mirrors with a
+  default selection based on your inferred location.  If you do not see that page,
+  try a different browser.  The checksum and signature are links to
+  the originals on the main distribution server.
+
+|                         | Mirrors | Checksum | Signature |
+|-------------------------|---------|----------|-----------|
+| Apache log4cxx ${LOG4CXX_RELEASE_VERSION} (tar.gz)      | [apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz] | [apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.sha512] | [apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.asc] |
+| Apache log4cxx ${LOG4CXX_RELEASE_VERSION} (zip)      | [apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip] | [apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.sha512] | [apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.asc] |
+
+It is essential that you verify the integrity of the downloaded files using the PGP or SHA512 signatures.
+Please read [Verifying Apache HTTP Server Releases](https://httpd.apache.org/dev/verification.html) for more
+information on why you should verify our releases.
+
+The PGP signatures can be verified using PGP or GPG. First download the [KEYS](https://www.apache.org/dist/logging/KEYS)
+as well as the asc signature file for the relevant distribution. Make sure you get these files from the
+[main distribution directory](https://www.apache.org/dist/logging/), rather than from a mirror. Then verify the signatures using:
+
+~~~
+% gpg --import KEYS
+% gpg --verify apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.asc apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz
+~~~
+
+* apache-log4cxx-${LOG4CXX_RELEASE_VERSION} is signed by ${releaseManager} (${releaseKey})
+
+Alternatively, you can verify the SHA512 signature on the files. A unix program called sha512 or sha512sum is included
+in many unix distributions.
+
+## Previous Releases
+
+All previous releases of Apache log4cxx can be found in the [archive repository](https://archive.apache.org/dist/logging/log4cxx).
+
+[apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz]:https://www.apache.org/dyn/closer.cgi/logging/log4cxx/${LOG4CXX_RELEASE_VERSION}/apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz
+[apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.sha512]:https://www.apache.org/dist/logging/log4cxx/${LOG4CXX_RELEASE_VERSION}/apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.sha512
+[apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.asc]:https://www.apache.org/dist/logging/log4cxx/${LOG4CXX_RELEASE_VERSION}/apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.tar.gz.asc
+[apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip]:https://www.apache.org/dyn/closer.cgi/logging/log4cxx/${LOG4CXX_RELEASE_VERSION}/apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip
+[apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.sha512]:https://www.apache.org/dist/logging/log4cxx/${LOG4CXX_RELEASE_VERSION}/apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.sha512
+[apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.asc]:https://www.apache.org/dist/logging/log4cxx/${LOG4CXX_RELEASE_VERSION}/apache-log4cxx-${LOG4CXX_RELEASE_VERSION}.zip.asc
diff --git a/src/site/markdown/extending.md b/src/site/markdown/extending.md
new file mode 100644
index 0000000..ede583f
--- /dev/null
+++ b/src/site/markdown/extending.md
@@ -0,0 +1,141 @@
+Extending Log4cxx {#extending-log4cxx}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+Sometimes, you may want to extend log4cxx, for example by creating
+a new appender to write out data in a new format.  The following
+guide shows how you can extend log4cxx in order to add a new appender.
+
+The full sample application can be found in the src/examples/cpp
+directory.
+
+The first thing for our example is to create a class that extends
+log4cxx.AppenderSkeleton so that we don't need to implement all of
+the virtual methods that are defined in log4cxx.Appender:
+
+~~~{.cpp}
+namespace log4cxx {
+
+class NullWriterAppender : public log4cxx::AppenderSkeleton {
+};
+
+}
+~~~
+
+Next, we need to add in a few macros in order to properly register
+our new appender with log4cxx:
+
+~~~{.cpp}
+namespace log4cxx {
+
+class NullWriterAppender : public log4cxx::AppenderSkeleton {
+public:
+	DECLARE_LOG4CXX_OBJECT(NullWriterAppender)
+	BEGIN_LOG4CXX_CAST_MAP()
+	LOG4CXX_CAST_ENTRY(NullWriterAppender)
+	LOG4CXX_CAST_ENTRY_CHAIN(AppenderSkeleton)
+	END_LOG4CXX_CAST_MAP()
+
+};
+
+IMPLEMENT_LOG4CXX_OBJECT(NullWriterAppender)
+
+}
+~~~
+
+These macros tell log4cxx what the name of our class is, as well as giving
+log4cxx a way of instansiating our class.  Without these macros, the custom
+class will not work.
+
+Now, let's add some basic functionality to our class.  As the name of
+our class implies, we are going to do nothing with our appender here, as
+this is just an example.  To that end, we need to implement the following:
+1. Default constructor
+2. `close` method
+3. `requiresLayout` method
+4. `append` method, which does the actual writing of the log event
+5. `activateOptions`, which causes the class to reconfigure itself
+6. `setOption`, which gets called whenever we get an option in a config file
+
+These are basically stub methods, with a few comments on their use:
+
+~~~{.cpp}
+	NullWriterAppender(){}
+
+	virtual void close(){}
+
+	virtual bool requiresLayout() const {
+		return false;
+	}
+
+	virtual void append(const spi::LoggingEventPtr& event, log4cxx::helpers::Pool& p){
+		// This gets called whenever there is a valid event for our appender.
+	}
+
+	virtual void activateOptions(log4cxx::helpers::Pool& /* pool */) {
+		// Given all of our options, do something useful(e.g. open a file)
+	}
+
+	virtual void setOption(const LogString& option, const LogString& value){
+		if (helpers::StringHelper::equalsIgnoreCase(option,
+			   LOG4CXX_STR("SOMEVALUE"), LOG4CXX_STR("somevalue"))){
+			// Do something with the 'value' here.
+		}
+	}
+~~~
+
+At this point, we now have a fully functioning(if useless) custom appender.  We can now
+refer to this appender in our configuration file like so:
+
+~~~{.xml}
+<?xml version="1.0" encoding="UTF-8" ?>
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
+    <param name="Target" value="System.out"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %c %-5p - %m%n"/>
+    </layout>
+  </appender>
+
+  <appender name="NullAppender" class="NullWriterAppender">
+    <param name="SomeValue" value="Nothing"/>
+  </appender>
+
+  <root>
+     <priority value="info" />
+     <appender-ref ref="ConsoleAppender"/>
+  </root>
+
+  <logger name="NullLogger" additivity="false">
+     <appender-ref ref="NullAppender"/>
+  </logger>
+</log4j:configuration>
+~~~
+
+When log4cxx is configured, any messages that go to the `NullLogger` will
+then be forwarded on to the `NullWriterAppender`.
+
+This same technique can be used to add new classes of many different kinds
+to log4cxx, including(but not limited to):
+* [Appenders](@ref log4cxx.Appender)
+* [Layouts](@ref log4cxx.Layout)
+* [Filters](@ref log4cxx.spi.Filter)
diff --git a/src/site/markdown/faq.md b/src/site/markdown/faq.md
index 190ff4d..b1c7ce6 100644
--- a/src/site/markdown/faq.md
+++ b/src/site/markdown/faq.md
@@ -1,3 +1,9 @@
+FAQ {#faq}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md
new file mode 100644
index 0000000..7d6d9c7
--- /dev/null
+++ b/src/site/markdown/index.md
@@ -0,0 +1,47 @@
+<!--
+ 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.
+-->
+
+# Short introduction to Apache log4cxx
+
+Apache log4cxx is a logging framework for C++ patterned after [Apache log4j],
+which uses [Apache Portable Runtime] for most platform-specific code and should
+be usable on any platform supported by APR. Apache log4cxx is licensed under
+the [Apache License], an open source license certified by the [Open Source Initiative].
+
+Almost every large application includes its own logging or tracing API.
+Inserting log statements into code is a low-tech method for debugging it.
+It may also be the only way because debuggers are not always available or
+applicable. This is usually the case for multithreaded applications and distributed
+applications at large.
+
+Experience indicates that logging is an important component of the development
+cycle. It offers several advantages. It provides precise context about a run of
+the application. Once inserted into the code, the generation of logging output
+requires no human intervention. Moreover, log output can be saved in persistent
+medium to be studied at a later time. In addition to its use in the development
+cycle, a sufficiently rich logging package can also be viewed as an auditing tool.
+
+Logging does have its drawbacks. It can slow down an application. If too verbose,
+it can cause scrolling blindness. To alleviate these concerns, log4cxx is
+designed to be reliable, fast and extensible. Since logging is rarely the
+main focus of an application, the log4cxx API strives to be simple to
+understand and to use.
+
+[Apache log4j]:https://logging.apache.org/log4j/2.x/
+[Apache Portable Runtime]:https://apr.apache.org/
+[Apache License]:https://www.apache.org/licenses/
+[Open Source Initiative]:https://opensource.org/
diff --git a/src/site/markdown/license.md b/src/site/markdown/license.md
new file mode 100644
index 0000000..233f889
--- /dev/null
+++ b/src/site/markdown/license.md
@@ -0,0 +1,232 @@
+License {#license}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+# Overview
+
+Typically the licenses listed for the project are that of the project itself, and not of dependencies.
+
+## Project License
+Apache License, Version 2.0
+~~~
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+~~~
diff --git a/src/site/markdown/qt-support.md b/src/site/markdown/qt-support.md
new file mode 100644
index 0000000..9455634
--- /dev/null
+++ b/src/site/markdown/qt-support.md
@@ -0,0 +1,45 @@
+Qt Support {#qt-support}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+
+When using Qt, messages from the Qt framework itself or other libraries
+may use the `QDebug` classes.  By default, this will print to stderr,
+thus bypassing the logger entirely.  In order to have these messages
+routed to log4cxx, a message handler for Qt must be installed.
+
+Log4cxx provides a separate library, log4cxx-qt, which contains useful
+utilities for working with Qt.
+
+To install a message handler that will route the Qt logging messages
+through log4cxx, include the messagehandler.h and call
+`qInstallMessageHandler` as follows:
+
+```cpp
+#include <log4cxx-qt/messagehandler.h>
+
+...
+
+qInstallMessageHandler( log4cxx::qt::messageHandler );
+```
+
+Note that by default, this message handler also calls `abort` upon a
+fatal message.
diff --git a/src/site/markdown/usage.md b/src/site/markdown/usage.md
new file mode 100644
index 0000000..84dbd77
--- /dev/null
+++ b/src/site/markdown/usage.md
@@ -0,0 +1,813 @@
+Usage {#usage}
+===
+<!--
+ Note: License header cannot be first, as doxygen does not generate
+ cleanly if it before the '==='
+-->
+<!--
+ 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.
+-->
+[TOC]
+
+# Loggers {#loggers}
+
+Log4cxx has three main components: *loggers*, *appenders* and *layouts*.
+These three types of components work together to enable developers to
+log messages according to message type and level, and to control at
+runtime how these messages are formatted and where they are reported. 
+
+## Hierarchy {#hierarchy}
+
+The first and foremost advantage of any logging API over plain
+`std::cout` resides in its ability to disable certain log statements
+while allowing others to print unhindered. This capability assumes that
+the logging space, that is, the space of all possible logging
+statements, is categorized according to some developer-chosen criteria. 
+
+Loggers are named entities. Logger names are case-sensitive and they
+follow the hierarchical naming rule: 
+
+**Named Hierarchy** 
+
+A logger is said to be an *ancestor* of another logger if its name
+followed by a dot is a prefix of the *descendant* logger name. A logger
+is said to be a *parent* of a *child* logger if there are no ancestors
+between itself and the descendant logger. 
+
+For example, the logger named `com.foo` is a parent of the logger
+named `com.foo.Bar`. Similarly, `java` is a parent of `java.util`
+and an ancestor of `java.util.Vector`. This naming scheme should be
+familiar to most developers. 
+
+The root logger resides at the top of the logger hierarchy. It is
+exceptional in two ways: 
+
+1.  it always exists, 
+2.  it cannot be retrieved by name. 
+
+Invoking the class static
+log4cxx::Logger::getRootLogger method retrieves it. All other loggers are instantiated and retrieved
+with the class static log4cxx::Logger::getLogger
+method. This method takes the name of the desired logger as a parameter.
+Some of the basic methods in the Logger class are listed below. 
+
+~~~{.cpp}
+    namespace log4cxx {
+    	class Logger {
+    		public:
+    			// Creation & retrieval methods:
+    			static LoggerPtr getRootLogger();
+    			static LoggerPtr getLogger(const std::string& name);
+    			static LoggerPtr getLogger(const std::wstring& name);
+    	}
+    }
+     
+    //
+    // Use these macros instead of calling Logger methods directly.
+    // Macros will handle char or wchar_t pointers or strings
+    // or most right-hand side expressions of an
+    // std::basic_string::operator<<.
+    //
+    #define LOG4CXX_TRACE(logger, expression) ...
+    #define LOG4CXX_DEBUG(logger, expression) ...
+    #define LOG4CXX_INFO(logger, expression) ...
+    #define LOG4CXX_WARN(logger, expression) ...
+    #define LOG4CXX_ERROR(logger, expression) ...
+    #define LOG4CXX_FATAL(logger, expression) ...
+~~~
+
+## Levels {#levels}
+
+Loggers *may* be assigned levels. The pre-defined levels: TRACE, DEBUG,
+INFO, WARN, ERROR and FATAL are defined in the
+log4cxx::Level class which provides accessor functions. 
+
+If a given logger is not assigned a level, then it inherits one from its
+closest ancestor with an assigned level. More formally: 
+
+**Level Inheritance** 
+
+The *inherited level* for a given logger *C*, is equal to the first
+non-null level in the logger hierarchy, starting at *C* and proceeding
+upwards in the hierarchy towards the *root* logger. 
+
+To ensure that all loggers can eventually inherit a level, the root
+logger always has an assigned level. 
+
+Below are four tables with various assigned level values and the
+resulting inherited levels according to the above rule. 
+
+| Logger name | Assigned level | Inherited level |
+| ----------- | -------------- | --------------- |
+| root        | Proot          | Proot           |
+| X           | none           | Proot           |
+| X.Y         | none           | Proot           |
+| X.Y.Z       | none           | Proot           |
+
+Example 1
+
+In example 1 above, only the root logger is assigned a level. This level
+value, *Proot*, is inherited by the other loggers *X*, *X.Y* and
+*X.Y.Z*. 
+
+| Logger name | Assigned level | Inherited level |
+| ----------- | -------------- | --------------- |
+| root        | Proot          | Proot           |
+| X           | Px             | Px              |
+| X.Y         | Pxy            | Pxy             |
+| X.Y.Z       | Pxyz           | Pxyz            |
+
+Example 2
+
+In example 2, all loggers have an assigned level value. There is no need
+for level inheritence. 
+
+| Logger name | Assigned level | Inherited level |
+| ----------- | -------------- | --------------- |
+| root        | Proot          | Proot           |
+| X           | Px             | Px              |
+| X.Y         | none           | Px              |
+| X.Y.Z       | Pxyz           | Pxyz            |
+
+Example 3
+
+In example 3, the loggers *root*, *X* and *X.Y.Z* are assigned the
+levels *Proot*, *Px* and *Pxyz* respectively. The logger *X.Y* inherits
+its level value from its parent *X*. 
+
+| Logger name | Assigned level | Inherited level |
+| ----------- | -------------- | --------------- |
+| root        | Proot          | Proot           |
+| X           | Px             | Px              |
+| X.Y         | none           | Px              |
+| X.Y.Z       | none           | Px              |
+
+Example 4
+
+In example 4, the loggers *root* and *X* and are assigned the levels
+*Proot* and *Px* respectively. The loggers *X.Y* and *X.Y.Z* inherits
+their level value from their nearest parent *X* having an assigned
+level. 
+
+## Requests {#requests}
+
+Logging requests are made by invoking a method of a logger instance,
+preferrably through the use of LOG4CXX\_INFO or similar macros which
+support short-circuiting if the threshold is not satisfied and use of
+the insertion operator (\<\<) in the message parameter. 
+
+~~~{.cpp}
+    log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("com.foo"));
+    const char* region = "World";
+    LOG4CXX_INFO(logger, "Simple message text.")
+    LOG4CXX_INFO(logger, "Hello, " << region)
+    LOG4CXX_DEBUG(logger, L"Iteration " << i)
+    LOG4CXX_DEBUG(logger, "e^10 = " << std::scientific << exp(10.0))
+    //
+    // Use a wchar_t first operand to force use of wchar_t based stream.
+    //
+    LOG4CXX_WARN(logger, L"" << i << L" is the number of the iteration.")
+~~~
+
+A logging request is said to be *enabled* if its level is higher than or
+equal to the level of its logger. Otherwise, the request is said to be
+*disabled*. A logger without an assigned level will inherit one from the
+hierarchy. This rule is summarized below. 
+
+**Basic Selection Rule** 
+
+A log request of level *p* in a logger with (either assigned or
+inherited, whichever is appropriate) level *q*, is enabled if *p \>= q*.
+
+This rule is at the heart of log4cxx. It assumes that levels are
+ordered. For the standard levels, we have *TRACE \< DEBUG \< INFO \<
+WARN \< ERROR \< FATAL*. 
+
+Here is an example of this rule. 
+
+~~~{.cpp}
+    // get a logger instance named "com.foo"
+    log4cxx::LoggerPtr  logger(log4cxx::Logger::getLogger("com.foo"));
+     
+    // Now set its level. Normally you do not need to set the
+    // level of a logger programmatically. This is usually done
+    // in configuration files.
+    logger->setLevel(log4cxx::Level::getInfo());
+     
+    log4cxx::LoggerPtr barlogger(log4cxx::Logger::getLogger("com.foo.Bar"));
+     
+    // This request is enabled, because WARN >= INFO.
+    LOG4CXX_WARN(logger, "Low fuel level.")
+     
+    // This request is disabled, because DEBUG < INFO.
+    LOG4CXX_DEBUG(logger, "Starting search for nearest gas station.")
+     
+    // The logger instance barlogger, named "com.foo.Bar",
+    // will inherit its level from the logger named
+    // "com.foo" Thus, the following request is enabled
+    // because INFO >= INFO.
+    LOG4CXX_INFO(barlogger. "Located nearest gas station.")
+     
+    // This request is disabled, because DEBUG < INFO.
+    LOG4CXX_DEBUG(barlogger, "Exiting gas station search")
+~~~
+
+Calling the *getLogger* method with the same name will always return a
+reference to the exact same logger object. 
+
+For example, in 
+
+~~~{.cpp}
+    log4cxx::LoggerPtr x = log4cxx::Logger::getLogger("wombat");
+    log4cxx::LoggerPtr y = log4cxx::Logger::getLogger("wombat");
+~~~
+
+*x* and *y* refer to *exactly* the same logger object. 
+
+Thus, it is possible to configure a logger and then to retrieve the same
+instance somewhere else in the code without passing around references.
+In fundamental contradiction to biological parenthood, where parents
+always preceed their children, log4cxx loggers can be created and
+configured in any order. In particular, a "parent" logger will find and
+link to its descendants even if it is instantiated after them. 
+
+Configuration of the log4cxx environment is typically done at
+application initialization. The preferred way is by reading a
+configuration file. This approach will be discussed shortly. 
+
+Log4cxx makes it easy to name loggers by *software component*. This can
+be accomplished by statically instantiating a logger in each class, with
+the logger name equal to the fully qualified name of the class. This is
+a useful and straightforward method of defining loggers. As the log
+output bears the name of the generating logger, this naming strategy
+makes it easy to identify the origin of a log message. However, this is
+only one possible, albeit common, strategy for naming loggers. Log4cxx
+does not restrict the possible set of loggers. The developer is free to
+name the loggers as desired. 
+
+Nevertheless, naming loggers after the class where they are located
+seems to be the best strategy known so far. 
+
+# Appenders and Layouts {#appenders-and-layouts}
+
+The ability to selectively enable or disable logging requests based on
+their logger is only part of the picture. Log4cxx allows logging
+requests to print to multiple destinations. In log4cxx speak, an output
+destination is called an *appender*. Currently, appenders exist for the
+[console](@ref log4cxx.ConsoleAppender), [files](@ref log4cxx.FileAppender),
+GUI components, [remote socket](@ref log4cxx.net.SocketAppender)
+servers, [NT Event Loggers](@ref log4cxx.nt.NTEventLogAppender),
+and remote UNIX [Syslog](@ref log4cxx.net.SyslogAppender)
+daemons. It is also possible to log
+[asynchronously](@ref log4cxx.AsyncAppender).
+
+More than one appender can be attached to a logger.
+
+The
+[addAppender](@ref log4cxx.Logger.addAppender)
+method adds an appender to a given logger. *Each enabled logging
+request for a given logger will be forwarded to all the appenders in
+that logger as well as the appenders higher in the hierarchy.* In other
+words, appenders are inherited additively from the logger hierarchy. For
+example, if a console appender is added to the root logger, then all
+enabled logging requests will at least print on the console. If in
+addition a file appender is added to a logger, say *C*, then enabled
+logging requests for *C* and *C*'s children will print on a file *and*
+on the console. It is possible to override this default behavior so that
+appender accumulation is no longer additive by
+[setting the additivity flag](@ref log4cxx.Logger.setAdditivity) to `false`.
+
+The rules governing appender additivity are summarized below.
+
+**Appender Additivity** 
+
+The output of a log statement of logger *C* will go to all the appenders
+in *C* and its ancestors. This is the meaning of the term "appender
+additivity". However, if an ancestor of logger *C*, say *P*, has the
+additivity flag set to *false*, then *C*'s output will be directed to
+all the appenders in *C* and it's ancestors up to and including *P* but,
+not the appenders in any of the ancestors of *P*.  
+  
+Loggers have their additivity flag set to *true* by default. 
+
+The table below shows an
+example:
+
+| Logger Name     | Added Appenders | Additivity Flag | Output Targets         | Comment                                                                                                                                           |
+| --------------- | --------------- | --------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
+| root            | A1              | not applicable  | A1                     | The root logger is anonymous but can be accessed with the log4cxx::Logger::getRootLogger() method. There is no default appender attached to root. |
+| x               | A-x1, A-x2      | true            | A1, A-x1, A-x2         | Appenders of "x" and root.                                                                                                                        |
+| x.y             | none            | true            | A1, A-x1, A-x2         | Appenders of "x" and root.                                                                                                                        |
+| x.y.z           | A-xyz1          | true            | A1, A-x1, A-x2, A-xyz1 | Appenders in "x.y.z", "x" and root.                                                                                                               |
+| security        | A-sec           | false           | A-sec                  | No appender accumulation since the additivity flag is set to *false*.                                                                             |
+| security.access | none            | true            | A-sec                  | Only appenders of "security" because the additivity flag in "security" is set to *false*.                                                         |
+
+More often than not, users wish to customize not only the output
+destination but also the output format. This is accomplished by
+associating a *layout* with an appender. The layout is responsible for
+formatting the logging request according to the user's wishes, whereas
+an appender takes care of sending the formatted output to its
+destination. 
+
+The [PatternLayout](@ref log4cxx.PatternLayout),
+part of the standard log4cxx distribution, lets the user specify the
+output format according to conversion patterns similar to the C language
+*printf* function. 
+
+For example, the PatternLayout with the conversion pattern `%%r [%%t]
+%%-5p %%c - %%m%%n` will output something akin to: 
+
+~~~
+176 [main] INFO org.foo.Bar - Located nearest gas station.
+~~~
+
+The first field is the number of milliseconds elapsed since the start of
+the program. The second field is the thread making the log request. The
+third field is the level of the log statement. The fourth field is the
+name of the logger associated with the log request. The text after the
+'-' is the message of the statement. 
+
+# Configuration {#configuration}
+
+Inserting log requests into the application code requires a fair amount
+of planning and effort. Observation shows that approximately 4 percent
+of code is dedicated to logging. Consequently, even moderately sized
+applications will have thousands of logging statements embedded within
+their code. Given their number, it becomes imperative to manage these
+log statements without the need to modify them manually. 
+
+The log4cxx environment is fully configurable programmatically. However,
+it is far more flexible to configure log4cxx using configuration files.
+Currently, configuration files can be written in XML or in Java
+properties (key=value) format. 
+
+Let us give a taste of how this is done with the help of an imaginary
+application *MyApp* that uses log4cxx. 
+
+~~~{.cpp}
+    #include "com/foo/bar.h"
+    using namespace com::foo;
+     
+    // include log4cxx header files.
+    #include "log4cxx/logger.h"
+    #include "log4cxx/basicconfigurator.h"
+    #include "log4cxx/helpers/exception.h"
+     
+    using namespace log4cxx;
+    using namespace log4cxx::helpers;
+     
+    LoggerPtr logger(Logger::getLogger("MyApp"));
+     
+    int main(int argc, char **argv)
+    {
+    	int result = EXIT_SUCCESS;
+    	try
+    	{
+    		// Set up a simple configuration that logs on the console.
+    		BasicConfigurator::configure();
+     
+    		LOG4CXX_INFO(logger, "Entering application.")
+    		Bar bar;
+    		bar.doIt();
+    		LOG4CXX_INFO(logger, "Exiting application.")
+    	}
+    	catch(Exception&)
+    	{
+    		result = EXIT_FAILURE;
+    	}
+     
+    	return result;
+    }
+~~~
+
+*MyApp* begins by including log4cxx headers. It then defines a static
+logger variable with the name *MyApp* which happens to be the fully
+qualified name of the class. 
+
+*MyApp* uses the *Bar* class defined in header file *com/foo/bar.h*. 
+
+~~~{.cpp}
+    // file com/foo/bar.h
+    #include "log4cxx/logger.h"
+     
+    namespace com {
+    	namespace foo {
+    		class Bar {
+    			static log4cxx::LoggerPtr logger;
+     
+    			public:
+    				void doIt();
+    		}
+    	}
+    }
+~~~
+
+~~~{.cpp}
+    // file bar.cpp
+    #include "com/foo/bar.h"
+     
+    using namespace com::foo;
+    using namespace log4cxx;
+     
+    LoggerPtr Bar::logger(Logger::getLogger("com.foo.bar"));
+     
+    void Bar::doIt() {
+    	LOG4CXX_DEBUG(logger, "Did it again!")
+    }
+~~~
+
+The invocation of the
+[BasicConfigurator::configure](@ref log4cxx.BasicConfigurator.configure)
+method creates a rather simple log4cxx setup. This method is hardwired
+to add to the root logger a [ConsoleAppender](@ref log4cxx.ConsoleAppender).
+The output will be formatted using a
+[PatternLayout](@ref log4cxx.PatternLayout)
+set to the pattern `%%-4r [%%t] %%-5p %%c %%x - %%m%%n`. 
+
+Note that by default, the root logger is assigned to
+*Level::getDebug()*. 
+
+The output of MyApp is: 
+
+~~~
+    0    [12345] INFO  MyApp  - Entering application.
+    36   [12345] DEBUG com.foo.Bar  - Did it again!
+    51   [12345] INFO  MyApp  - Exiting application.
+~~~
+
+The previous example always outputs the same log information.
+Fortunately, it is easy to modify *MyApp* so that the log output can be
+controlled at run-time. Here is a slightly modified version. 
+
+~~~{.cpp}
+    // file MyApp2.cpp
+     
+    #include "com/foo/bar.h"
+    using namespace com::foo;
+     
+    // include log4cxx header files.
+    #include "log4cxx/logger.h"
+    #include "log4cxx/basicconfigurator.h"
+    #include "log4cxx/propertyconfigurator.h"
+    #include "log4cxx/helpers/exception.h"
+     
+    using namespace log4cxx;
+    using namespace log4cxx::helpers;
+    // Define a static logger variable so that it references the
+    // Logger instance named "MyApp".
+    LoggerPtr logger(Logger::getLogger("MyApp"));
+     
+    int main(int argc, char **argv)
+    {
+    	int result = EXIT_SUCCESS;
+    	try
+    	{
+    		if (argc > 1)
+    		{
+    			// BasicConfigurator replaced with PropertyConfigurator.
+    			PropertyConfigurator::configure(argv[1]);
+    		}
+    		else
+    		{
+    			BasicConfigurator::configure();
+    		}
+     
+    		LOG4CXX_INFO(logger, "Entering application.")
+    		Bar bar
+    		bar.doIt();
+    		LOG4CXX_INFO(logger, "Exiting application.")
+    	}
+    	catch(Exception&)
+    	{
+    		result = EXIT_FAILURE;
+    	}
+     
+    	return result;
+    }
+~~~
+
+This version of *MyApp* instructs *PropertyConfigurator* to parse a
+configuration file and set up logging accordingly. 
+
+Here is a sample configuration file that results in exactly same output
+as the previous *BasicConfigurator* based example. 
+
+~~~
+    # Set root logger level to DEBUG and its only appender to A1.
+    log4j.rootLogger=DEBUG, A1
+     
+    # A1 is set to be a ConsoleAppender.
+    log4j.appender.A1=org.apache.log4j.ConsoleAppender
+     
+    # A1 uses PatternLayout.
+    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+    log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+~~~
+
+It can be noticed that the PropertyConfigurator file format is the same
+as log4j. 
+
+Suppose we are no longer interested in seeing the output of any
+component belonging to the *com::foo* package. The following
+configuration file shows one possible way of achieving this. 
+
+~~~
+    log4j.rootLogger=DEBUG, A1
+    log4j.appender.A1=org.apache.log4j.ConsoleAppender
+    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+     
+    # Print the date in ISO 8601 format
+    log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
+     
+    # Print only messages of level WARN or above in the package com.foo.
+    log4j.logger.com.foo=WARN
+~~~
+
+The output of *MyApp* configured with this file is shown below. 
+
+~~~
+    2000-09-07 14:07:41,508 [12345] INFO  MyApp - Entering application.
+    2000-09-07 14:07:41,529 [12345] INFO  MyApp - Exiting application.
+~~~
+
+As the logger *com.foo.Bar* does not have an assigned level, it inherits
+its level from *com.foo*, which was set to WARN in the configuration
+file. The log statement from the *Bar::doIt* method has the level DEBUG,
+lower than the logger level WARN. Consequently, *doIt()* method's log
+request is suppressed. 
+
+Here is another configuration file that uses multiple appenders. 
+
+~~~
+    log4j.rootLogger=debug, stdout, R
+     
+    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+     
+    # Pattern to output the caller's file name and line number.
+    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
+     
+    log4j.appender.R=org.apache.log4j.RollingFileAppender
+    log4j.appender.R.File=example.log
+     
+    log4j.appender.R.MaxFileSize=100KB
+    # Keep one backup file
+    log4j.appender.R.MaxBackupIndex=1
+     
+    log4j.appender.R.layout=org.apache.log4j.PatternLayout
+    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
+~~~
+
+Calling the enhanced MyApp with the this configuration file will output
+the following on the console. 
+
+~~~
+    INFO [12345] (MyApp2.cpp:31) - Entering application.
+    DEBUG [12345] (Bar.h:16) - Doing it again!
+    INFO [12345] (MyApp2.cpp:34) - Exiting application.
+~~~
+
+In addition, as the root logger has been allocated a second appender,
+output will also be directed to the *example.log* file. This file will
+be rolled over when it reaches 100KB. When roll-over occurs, the old
+version of *example.log* is automatically moved to *example.log.1*. 
+
+Note that to obtain these different logging behaviors we did not need to
+recompile code. We could just as easily have logged to a UNIX Syslog
+daemon, redirected all *com.foo* output to an NT Event logger, or
+forwarded logging events to a remote log4cxx server, which would log
+according to local server policy, for example by forwarding the log
+event to a second log4cxx server. 
+
+# Default Initialization Procedure {#default-initialization-procedure}
+
+The log4cxx library does not make any assumptions about its environment.
+In particular, there are no default log4cxx appenders. Under certain
+well-defined circumstances however, the static inializer of the *Logger*
+class will attempt to automatically configure log4cxx. 
+
+The exact default initialization algorithm is defined as follows: 
+
+1.  Set the configurationOptionStr string variable to the value of the
+    **LOG4CXX\_CONFIGURATION** environment variable if set, otherwise
+    the value of the **log4j.configuration** environment variable if
+    set, otherwise the first of the following file names which exist in
+    the current working directory, "log4cxx.xml", "log4cxx.properties",
+    "log4j.xml" and "log4j.properties". If configurationOptionStr has
+    not been set, then disable logging. 
+2.  Unless a custom configurator is specified using the
+    **LOG4CXX\_CONFIGURATOR\_CLASS** or **log4j.configuratorClass**
+    environment variable, the PropertyConfigurator will be used to
+    configure log4cxx unless the file name ends with the ".xml"
+    extension, in which case the DOMConfigurator will be used. If a
+    custom configurator is specified, the environment variable should
+    contain a fully qualified class name of a class that implements the
+    Configurator interface. 
+
+# Nested Diagnostic Contexts {#nested-diagnostic-contexts}
+
+Most real-world systems have to deal with multiple clients
+simultaneously. In a typical multithreaded implementation of such a
+system, different threads will handle different clients. Logging is
+especially well suited to trace and debug complex distributed
+applications. A common approach to differentiate the logging output of
+one client from another is to instantiate a new separate logger for each
+client. This promotes the proliferation of loggers and increases the
+management overhead of logging. 
+
+A lighter technique is to uniquely stamp each log request initiated from
+the same client interaction. Neil Harrison described this method in the
+book "Patterns for Logging Diagnostic Messages," in *Pattern Languages
+of Program Design 3*, edited by R. Martin, D. Riehle, and F. Buschmann
+(Addison-Wesley, 1997). 
+
+To uniquely stamp each request, the user pushes contextual information
+into the NDC, the abbreviation of *Nested Diagnostic Context*. The NDC
+class is shown below. 
+
+~~~{.cpp}
+    namespace log4cxx {
+    	class NDC {
+    		public:
+    			// pushes the value on construction and pops on destruction.
+    			NDC(const std::string& value);
+    			NDC(const std::wstring& value);
+     
+    			// Remove the top of the context from the NDC.
+    			static LogString pop();
+     
+    			// Add diagnostic context for the current thread.
+    			static void push(const std::string& message);
+    			static void push(const std::wstring& message);
+    	}
+    }
+~~~
+
+The NDC is managed per thread as a *stack* of contextual information.
+Note that all methods of the *log4cxx::NDC* class are static. Assuming
+that NDC printing is turned on, every time a log request is made, the
+appropriate log4cxx component will include the *entire* NDC stack for
+the current thread in the log output. This is done without the
+intervention of the user, who is responsible only for placing the
+correct information in the NDC by using the *push* and *pop* methods at
+a few well-defined points in the code. In contrast, the per-client
+logger approach commands extensive changes in the code. 
+
+To illustrate this point, let us take the example of a servlet
+delivering content to numerous clients. The servlet can build the NDC at
+the very beginning of the request before executing other code. The
+contextual information can be the client's host name and other
+information inherent to the request, typically information contained in
+cookies. Hence, even if the servlet is serving multiple clients
+simultaneously, the logs initiated by the same code, i.e. belonging to
+the same logger, can still be distinguished because each client request
+will have a different NDC stack. Contrast this with the complexity of
+passing a freshly instantiated logger to all code exercised during the
+client's request. 
+
+Nevertheless, some sophisticated applications, such as virtual hosting
+web servers, must log differently depending on the virtual host context
+and also depending on the software component issuing the request. Recent
+log4cxx releases support multiple hierarchy trees. This enhancement
+allows each virtual host to possess its own copy of the logger
+hierarchy. 
+
+# Performance {#performance}
+
+One of the often-cited arguments against logging is its computational
+cost. This is a legitimate concern as even moderately sized applications
+can generate thousands of log requests. Much effort was spent measuring
+and tweaking logging performance. Log4cxx claims to be fast and
+flexible: speed first, flexibility second. 
+
+The user should be aware of the following performance issues. 
+
+1.  **Logging performance when logging is turned off.** 
+    
+    When logging is turned off entirely or just for a set of levels, the
+    cost of a log request consists of a method invocation plus an
+    integer comparison. The LOG4CXX\_DEBUG and similar macros suppress
+    unnecessary expression evaluation if the request is not enabled. 
+
+2.  **The performance of deciding whether to log or not to log when
+    logging is turned on.** 
+    
+    This is essentially the performance of walking the logger hierarchy.
+    When logging is turned on, log4cxx still needs to compare the level
+    of the log request with the level of the request logger. However,
+    loggers may not have an assigned level; they can inherit them from
+    the logger hierarchy. Thus, before inheriting a level, the logger
+    may need to search its ancestors. 
+    
+    There has been a serious effort to make this hierarchy walk to be as
+    fast as possible. For example, child loggers link only to their
+    existing ancestors. In the *BasicConfigurator* example shown
+    earlier, the logger named *com.foo.Bar* is linked directly to the
+    root logger, thereby circumventing the nonexistent *com* or
+    *com.foo* loggers. This significantly improves the speed of the
+    walk, especially in "sparse" hierarchies. 
+    
+    The cost of walking the hierarchy is typically 3 times slower than
+    when logging is turned off entirely. 
+
+3.  **Actually outputting log messages** 
+    
+    This is the cost of formatting the log output and sending it to its
+    target destination. Here again, a serious effort was made to make
+    layouts (formatters) perform as quickly as possible. The same is
+    true for appenders. 
+
+# Removing log statements {#removing-log-statements}
+
+Sometimes, you may want to remove all log statements from your program,
+either for speed purposes or to remove sensitive information.  This can easily
+be accomplished at build-time when using the standard `LOG4CXX_[level]` macros
+(`LOG4CXX_TRACE`, `LOG4CXX_DEBUG`, `LOG4CXX_INFO`, `LOG4CXX_WARN`,
+`LOG4CXX_ERROR`, `LOG4CXX_FATAL`).
+
+Log statements can be removed either above a certain level, or they
+can be disabled entirely.
+
+For example, if we want to remove all log statements within our program
+that use the `LOG4CXX_[level]` family of macros, add a preprocessor
+definition `LOG4CXX_THRESHOLD` set to 50001
+or greater.  This will ensure that any log statement that uses the
+`LOG4CXX_[level]`-macro will be compiled out of the program.  To remove
+all log statements at `DEBUG` or below, set `LOG4CXX_THRESHOLD` to a
+value between 10001-20000.
+
+The levels are set as follows:
+
+|Logger Level|Integer Value|
+|------------|-------------|
+|TRACE       |5000         |
+|DEBUG       |10000        |
+|INFO        |20000        |
+|WARN        |30000        |
+|ERROR(1)    |40000        |
+|FATAL       |50000        |
+
+(1) The `LOG4CXX_ASSERT` macro is the same level as `LOG4CXX_ERROR`
+
+Note that this has no effect on other macros, such as using the
+`LOG4CXX_LOG`, `LOG4CXX_LOGLS`, or `LOG4CXX_L7DLOG` family of macros.
+
+# Logging Custom Types {#custom-types}
+
+Often, the data that needs to be logged is not just standard data types
+(such as int, string, etc), but amalgamations of those types in a data
+structure such as a class or struct.  In order to log these custom types,
+simply override an `operator<<` function, the same as if you would
+print the custom type to `std::cout`.  This can be accomplished by
+doing the following:
+
+~~~{.cpp}
+struct MyStruct {
+	int x;
+};
+
+std::ostream& operator<<( std::ostream& stream, const MyStruct& mystruct ){
+	stream << "[MyStruct x:" << mystruct.x << "]";
+	return stream;
+}
+
+void someMethod(){
+	MyStruct mine;
+	mine.x = 90;
+	LOG4CXX_INFO( logger, "Some important information: " << mine );
+}
+~~~
+
+This will output data similar to the following:
+
+~~~
+0 [0x7fd1eed63bc0] INFO root null - Some important information: [MyStruct x:90]
+~~~
+
+# Conclusions {#conclusions}
+
+Apache Log4cxx is a popular logging package written in C++. One of its
+distinctive features is the notion of inheritance in loggers. Using a
+logger hierarchy it is possible to control which log statements are
+output at arbitrary granularity. This helps reduce the volume of logged
+output and minimize the cost of logging. 
+
+One of the advantages of the log4cxx API is its manageability. Once the
+log statements have been inserted into the code, they can be controlled
+with configuration files. They can be selectively enabled or disabled,
+and sent to different and multiple output targets in user-chosen
+formats. The log4cxx package is designed so that log statements can
+remain in shipped code without incurring a heavy performance cost.
diff --git a/src/site/site.vm b/src/site/site.vm
deleted file mode 100644
index d6aeca9..0000000
--- a/src/site/site.vm
+++ /dev/null
@@ -1,518 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--
-   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.
--->
-<!-- Generated by Apache Maven Doxia at $dateFormat.format( $currentDate ) -->
-#macro ( link $href $name $target $img $position $alt $border $width $height )
-	#set ( $linkTitle = ' title="' + $name + '"' )
-	#if( $target )
-		#set ( $linkTarget = ' target="' + $target + '"' )
-	#else
-		#set ( $linkTarget = "" )
-	#end
-	#if ( $href.toLowerCase().startsWith("http:/") || $href.toLowerCase().startsWith("https:/") ||
-		$href.toLowerCase().startsWith("ftp:/") || $href.toLowerCase().startsWith("mailto:/") ||
-		$href.toLowerCase().startsWith("file:/") || ($href.toLowerCase().indexOf("://") != -1) )
-		#set ( $linkClass = ' class="external" target="_blank"' )
-
-		#if ( $linkTarget )
-		#else
-			#set ( $linkTarget = "_blank" )
-		#end
-
-	#else
-		#set ( $linkClass = "" )
-	#end
-	#if ( $img )
-		#if ( $position == "left" )
-			<a href="$href"$linkClass$linkTarget$linkTitle>#image($img $alt $border $width $height)$name</a>
-		#else
-			<a href="$href"$linkClass$linkTarget$linkTitle>$name #image($img $alt $border $width $height)</a>
-		#end
-	#else
-		<a href="$href"$linkClass$linkTarget$linkTitle>$name</a>
-	#end
-#end
-##
-#macro ( image $img $alt $border $width $height )
-	#if( $img )
-		#if ( ! ( $img.toLowerCase().startsWith("http:/") || $img.toLowerCase().startsWith("https:/") ||
-						$img.toLowerCase().startsWith("ftp:/") || $img.toLowerCase().startsWith("mailto:/") ||
-						$img.toLowerCase().startsWith("file:/") || ($img.toLowerCase().indexOf("://") != -1) ) )
-			#set ( $imgSrc = $PathTool.calculateLink( $img, $relativePath ) )
-			#set ( $imgSrc = $imgSrc.replaceAll( '\\', '/' ) )
-			#set ( $imgSrc = ' src="' + $imgSrc + '"' )
-		#else
-			#set ( $imgSrc = ' src="' + $img + '"' )
-		#end
-		#if( $alt )
-			#set ( $imgAlt = ' alt="' + $alt + '"' )
-		#else
-			#set ( $imgAlt = ' alt=""' )
-		#end
-		#if( $border )
-			#set ( $imgBorder = ' border="' + $border + '"' )
-		#else
-			#set ( $imgBorder = "" )
-		#end
-		#if( $width )
-			#set ( $imgWidth = ' width="' + $width + '"' )
-		#else
-			#set ( $imgWidth = "" )
-		#end
-		#if( $height )
-			#set ( $imgHeight = ' height="' + $height + '"' )
-		#else
-			#set ( $imgHeight = "" )
-		#end
-		<img class="imageLink"$imgSrc$imgAlt$imgBorder$imgWidth$imgHeight/>
-	#end
-#end
-#macro ( banner $banner $id )
-	#if ( $banner )
-		#if( $banner.href )
-			#set ( $hrf = $banner.href )
-			#if ( ! ( $hrf.toLowerCase().startsWith("http:/") || $hrf.toLowerCase().startsWith("https:/") ||
-				$hrf.toLowerCase().startsWith("ftp:/") || $hrf.toLowerCase().startsWith("mailto:/") ||
-				$hrf.toLowerCase().startsWith("file:/") || ($hrf.toLowerCase().indexOf("://") != -1) ) )
-				#set ( $hrf = $PathTool.calculateLink( $hrf, $relativePath ) )
-				#set ( $hrf = $hrf.replaceAll( '\\', '/' ) )
-				#if ( ( $hrf == '' ) )
-					#set ( $hrf = './' )
-				#end
-			#end
-			<a href="$hrf" id="$id"#if( $banner.alt ) title="$banner.alt"#end>
-		#else
-				<div id="$id">
-		#end
-##
-		#if( $banner.src )
-				#set ( $src = $banner.src )
-				#if ( ! ( $src.toLowerCase().startsWith("http:/") || $src.toLowerCase().startsWith("https:/") ||
-								$src.toLowerCase().startsWith("ftp:/") || $src.toLowerCase().startsWith("mailto:/") ||
-								$src.toLowerCase().startsWith("file:/") || ($src.toLowerCase().indexOf("://") != -1) ) )
-						#set ( $src = $PathTool.calculateLink( $src, $relativePath ) )
-						#set ( $src = $src.replaceAll( '\\', '/' ) )
-				#end
-				#if ( $banner.alt )
-						#set ( $alt = $banner.alt )
-				#else
-						#set ( $alt = $banner.name )
-				#end
-				<img src="$src" alt="$alt" />
-		#else
-				$banner.name
-		#end
-##
-		#if( $banner.href )
-				</a>
-		#else
-				</div>
-		#end
-	#end
-#end
-##
-#macro ( links $links )
-	<ul class="nav">
-	#set ( $counter = 0 )
-	#foreach( $item in $links )
-		#set ( $counter = $counter + 1 )
-		#set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
-		#set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
-		#set ( $activeClass = "" )
-		#if ( $alignedFileName == $currentItemHref)
-			#set ( $activeClass = ' class="active"' )
-		#end
-		<li$activeClass>
-		#link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
-		</li>
-	#end
-	</ul>
-#end
-##
-#macro ( breadcrumbs $breadcrumbs )
-	#foreach( $item in $breadcrumbs )
-		#set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
-		#set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
-		#if ( ( $currentItemHref == '' ) )
-			#set ( $currentItemHref = './' )
-		#end
-##
-			#link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
-			<span class="divider">&gt;</span>
-	#end
-	$title
-#end
-##
-#macro ( displayTree $display $item )
-	#if ( $item && $item.items && $item.items.size() > 0 )
-		#foreach( $subitem in $item.items )
-			#set ( $subitemHref = $PathTool.calculateLink( $subitem.href, $relativePath ) )
-			#set ( $subitemHref = $subitemHref.replaceAll( '\\', '/' ) )
-##
-			#if ( $alignedFileName == $subitemHref )
-				#set ( $display = true )
-			#end
-##
-			#displayTree( $display $subitem )
-		#end
-	#end
-#end
-##
-#macro ( menuItem $item $isComponentDocumentation )
-	#set ( $collapse = "none" )
-	#set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
-	#set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
-##
-	#if ( $item && $item.items && $item.items.size() > 0 )
-		#if ( $item.collapse == false )
-			#set ( $collapse = "expanded" )
-		#else
-			## By default collapsed
-			#set ( $collapse = "collapsed" )
-		#end
-##
-		#set ( $display = false )
-		#displayTree( $display $item )
-##
-		#if ( $alignedFileName == $currentItemHref || $display )
-			#set ( $collapse = "expanded" )
-		#end
-	#end
-	#set ( $active = "" )
-	#if ( $alignedFileName == $currentItemHref )
-	#set ($active = " active")
-	#end
-	#set ( $thisProjectDir = "../${project.artifactId}" )
-	#if ($thisProjectDir == $PathTool.getDirectoryComponent( $item.href ))
-	#set ($active = " active")
-	#end
-	#if (${project.artifactId} != "apache-log4cxx" && $isComponentDocumentation &&
-				($item.href == "team-list.html" || $item.href == "mail-lists.html"
-				|| $item.href == "issue-tracking.html" || $item.href == "license.html"
-				|| $item.href == "source-repository.html"))
-	<!-- Removing overall project item $item.name from component-specific menu -->
-	#else
-		#set ($thisItemName = $item.name)
-		#if (${project.artifactId} != "apache-log4cxx" && $isComponentDocumentation )
-		#set ($thisItemName = $item.name.replace("Project Information", "Component Project"))
-		#set ($thisItemName = $item.name.replace("Project", "Component"))
-		#end
-		<li class="$collapse$active">
-		#link($currentItemHref $thisItemName $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
-		#if ( $item && $item.items && $item.items.size() > 0 )
-			#if ( $collapse == "expanded" )
-				<ul>
-					#foreach( $subitem in $item.items )
-						#menuItem( $subitem $isComponentDocumentation )
-					#end
-				</ul>
-			#end
-		#end
-		</li>
- 	#end
-#end
-##
-#macro ( mainMenu $menus )
-	#foreach( $menu in $menus )
-		<ul class="nav nav-list">
-		#set ($isComponentDocumentation = false)
- 		#if ( $menu.name )
-			#set ( $menuName = $menu.name )
-			#if ( $menuName == "Project Documentation" )
-			#set ( $menuName = "Component Documentation" )
-			#set ($isComponentDocumentation = true)
-			#end
-			#if ( $menu.img )
-			 <li class="nav-header"><i class="$menu.img"></i>$menuName</li>
-			#else
-			 <li class="nav-header">$menuName</li>
-			#end
-		#end
-		#if ( $menu.items && $menu.items.size() > 0 )
-			#foreach( $item in $menu.items )
-				#menuItem( $item $isComponentDocumentation )
-			#end
-		#end
-		</ul>
-	#end
-#end
-##
-#macro ( copyright )
-	#if ( $project )
-		#if ( ${project.organization} && ${project.organization.name} )
-			#set ( $period = "" )
-		#else
-			#set ( $period = "." )
-	 #end
-##
-	 #set ( $currentYear = ${currentDate.year} + 1900 )
-##
-		#if ( ${project.inceptionYear} && ( ${project.inceptionYear} != ${currentYear.toString()} ) )
-			${project.inceptionYear}-${currentYear}${period}
-		#else
-			${currentYear}${period}
-		#end
-##
-		#if ( ${project.organization} )
-			#if ( ${project.organization.name} && ${project.organization.url} )
-					<a href="$project.organization.url">${project.organization.name}</a>.
-			#elseif ( ${project.organization.name} )
-				${project.organization.name}.
-			#end
-		#end
-	#end
-#end
-##
-#macro ( publishDate $position $publishDate $version )
-	#if ( $publishDate && $publishDate.format )
-		#set ( $format = $publishDate.format )
-	#else
-		#set ( $format = "yyyy-MM-dd" )
-	#end
-##
-	$dateFormat.applyPattern( $format )
-##
-	#set ( $dateToday = $dateFormat.format( $currentDate ) )
-##
-	#if ( $publishDate && $publishDate.position )
-		#set ( $datePosition = $publishDate.position )
-	#else
-		#set ( $datePosition = "left" )
-	#end
-##
-	#if ( $version )
-		#if ( $version.position )
-			#set ( $versionPosition = $version.position )
-		#else
-			#set ( $versionPosition = "left" )
-		#end
-	#else
-		#set ( $version = "" )
-		#set ( $versionPosition = "left" )
-	#end
-##
-	#set ( $breadcrumbs = $decoration.body.breadcrumbs )
-	#set ( $links = $decoration.body.links )
-
-	#if ( $datePosition.equalsIgnoreCase( $position ) )
-		#if ( ( $datePosition.equalsIgnoreCase( "right" ) ) || ( $datePosition.equalsIgnoreCase( "bottom" ) ) )
-			<span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
-			#if ( $versionPosition.equalsIgnoreCase( $position ) )
-				<span class="divider">|</span> <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
-			#end
-		#elseif ( ( $datePosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $datePosition.equalsIgnoreCase( "navigation-top" ) ) )
-			<div id="lastPublished">
-				<span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
-				#if ( $versionPosition.equalsIgnoreCase( $position ) )
-					<span class="divider">|</span> <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
-				#end
-			</div>
-		#elseif ( $datePosition.equalsIgnoreCase("left") )
-			<div class="pull-left">
-				<span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
-				#if ( $versionPosition.equalsIgnoreCase( $position ) )
-					<span class="divider">|</span> <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
-				#end
-				#if ( $breadcrumbs && $breadcrumbs.size() > 0 )
-					<span class="divider">|</span> #breadcrumbs( $breadcrumbs )
-				#end
-			</div>
-		#end
-	#elseif ( $versionPosition.equalsIgnoreCase( $position ) )
-		#if ( ( $versionPosition.equalsIgnoreCase( "right" ) ) || ( $versionPosition.equalsIgnoreCase( "bottom" ) ) )
-			$prefix <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
-		#elseif ( ( $versionPosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $versionPosition.equalsIgnoreCase( "navigation-top" ) ) )
-			<div id="lastPublished">
-				<span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
-			</div>
-		#elseif ( $versionPosition.equalsIgnoreCase("left") )
-			<div class="pull-left">
-				<span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
-				#if ( $breadcrumbs && $breadcrumbs.size() > 0 )
-					<span class="divider">|</span> #breadcrumbs( $breadcrumbs )
-				#end
-			</div>
-		#end
-	#elseif ( $position.equalsIgnoreCase( "left" ) )
-		#if ( $breadcrumbs && $breadcrumbs.size() > 0 )
-			<div class="pull-left">
-				#breadcrumbs( $breadcrumbs )
-			</div>
-		#end
-	#end
-#end
-##
-#macro ( poweredByLogo $poweredBy )
-	#if( $poweredBy )
-		#foreach ($item in $poweredBy)
-			#if( $item.href )
-				#set ( $href = $PathTool.calculateLink( $item.href, $relativePath ) )
-				#set ( $href = $href.replaceAll( '\\', '/' ) )
-			#else
-				#set ( $href="https://maven.apache.org/" )
-			#end
-##
-			#if( $item.name )
-				#set ( $name = $item.name )
-			#else
-				#set ( $name = $i18n.getString( "site-renderer", $locale, "template.builtby" )	)
-				#set ( $name = "${name} Maven"	)
-			#end
-##
-			#if( $item.img )
-				#set ( $img = $item.img )
-			#else
-				#set ( $img = "images/maven-feather.png" )
-			#end
-##
-			#if ( ! ( $img.toLowerCase().startsWith("http:/") || $img.toLowerCase().startsWith("https:/") ||
-						$img.toLowerCase().startsWith("ftp:/") || $img.toLowerCase().startsWith("mailto:/") ||
-						$img.toLowerCase().startsWith("file:/") || ($img.toLowerCase().indexOf("://") != -1) ) )
-				#set ( $img = $PathTool.calculateLink( $img, $relativePath ) )
-				#set ( $img = $img.replaceAll( '\\', '/' ) )
-			#end
-##
-			#if( $item.alt )
-				#set ( $alt = ' alt="' + $item.alt + '"' )
-			#else
-				#set ( $alt = ' alt="' + $name + '"' )
-			#end
-##
-			#if( $item.border )
-				#set ( $border = ' border="' + $item.border + '"' )
-			#else
-				#set ( $border = "" )
-			#end
-##
-			#if( $item.width )
-				#set ( $width = ' width="' + $item.width + '"' )
-			#else
-				#set ( $width = "" )
-			#end
-			#if( $item.height )
-				#set ( $height = ' height="' + $item.height + '"' )
-			#else
-				#set ( $height = "" )
-			#end
-##
-			<a href="$href" title="$name" class="poweredBy">
-				<img class="poweredBy" $alt src="$img" $border $width $height />
-			</a>
-		#end
-		#if( $poweredBy.isEmpty() )
-			<a href="https://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
-				<img class="poweredBy" alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png" />
-			</a>
-		#end
-	#else
-		<a href="https://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
-			<img class="poweredBy" alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png" />
-		</a>
-	#end
-#end
-##
-#macro ( googleAnalytics $accountId )
-	#if( $accountId && $accountId != "" )
-		<!-- Google Analytics -->
-		<script type="text/javascript">
-
-			var _gaq = _gaq || [];
-			_gaq.push(['_setAccount', '$accountId']);
-			_gaq.push (['_gat._anonymizeIp']);
-			_gaq.push(['_trackPageview']);
-
-			(function() {
-				var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
-				ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
-				var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
-			})();
-
-		</script>
-	#end
-#end
-##
-<html xmlns="http://www.w3.org/1999/xhtml"#if ( $locale ) xml:lang="$locale.language" lang="$locale.language"#end>
-	<head>
-		<meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" />
-		<title>$title - $project.name</title>
-		<link rel="stylesheet" href="$relativePath/css/bootstrap.min.css" type="text/css" />
-		<link rel="stylesheet" href="$relativePath/css/site.css" type="text/css" />
-		<script type="text/javascript" src="$relativePath/js/jquery.min.js"></script>
-		<script type="text/javascript" src="$relativePath/js/bootstrap.min.js"></script>
-		<script type="text/javascript" src="$relativePath/js/prettify.min.js"></script>
-		<script type="text/javascript" src="$relativePath/js/site.js"></script>
-#foreach( $author in $authors )
-			<meta name="author" content="$author" />
-#end
-#if ( $dateCreation )
-		<meta name="Date-Creation-yyyymmdd" content="$dateCreation" />
-#end
-#if ( $dateRevision )
-		<meta name="Date-Revision-yyyymmdd" content="$dateRevision" />
-#end
-#if ( $locale )
-		<meta http-equiv="Content-Language" content="$locale.language" />
-#end
-		$headContent
-		#googleAnalytics( $decoration.googleAnalyticsAccountId )
-	</head>
-	<body class="composite">
-		<a href="https://logging.apache.org/">
-			<img class="logo-left" src="$relativePath/images/logos/ls-logo.jpg" alt="Apache logging services logo" />
-		</a>
-		<img class="logo-right" src="$relativePath/images/logos/logo.png" alt="Apache log4j logo" />
-		<div class="clear"></div>
-
-		<div class="navbar">
-			<div class="navbar-inner">
-				<div class="container-fluid">
-					<a class="brand" href="$project.url">$project.name &#8482;</a>
-					#links( $decoration.body.links )
-
-					<div class="pull-right">
-						#publishDate( "right" $decoration.publishDate $decoration.version )
-					</div>
-				</div>
-			</div>
-		</div>
-
-		<div class="container-fluid">
-			<table class="layout-table">
-				<tr>
-					<td class="sidebar">
-						<div class="well sidebar-nav">
-							#mainMenu( $decoration.body.menus )
-						</div>
-						<div id="poweredBy">
-							#poweredByLogo( $decoration.poweredBy )
-						</div>
-					</td>
-					<td class="content">
-						$bodyContent
-					</td>
-				</tr>
-			</table>
-		</div>
-
-		<div class="footer">
-			#set ( $currentYear = ${currentDate.year} + 1900 )
-				<p>Copyright © ${project.inceptionYear}-${currentYear} <a class="external" href="$project.organization.url">${project.organization.name}</a>. All Rights Reserved.</p>
-				<p>Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.</p>
-				<p>Site powered by <a class="external" href="https://getbootstrap.com/">Twitter Bootstrap</a>. Icons from <a class="external" href="https://glyphicons.com/">Glyphicons Free</a>.</p>
-		</div>
-	</body>
-</html>
\ No newline at end of file
diff --git a/src/site/site.xml b/src/site/site.xml
deleted file mode 100644
index c19d505..0000000
--- a/src/site/site.xml
+++ /dev/null
@@ -1,142 +0,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.
-
--->
-<project	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 https://maven.apache.org/xsd/decoration-1.4.0.xsd"
-			name="log4cxx">
-
-	<publishDate	position="right" />
-	<version		position="right" />
-
-	<bannerLeft>
-		<name>Logging Services</name>
-		<src>images/logos/ls-logo.jpg</src>
-		<href>https://logging.apache.org</href>
-		<title>Open the Apache Logging homepage</title>
-	</bannerLeft>
-
-	<body>
-		<links>
-			<item	name="Logging Wiki"
-					href="https://wiki.apache.org/logging"
-			/>
-			<item	name="Apache"
-					href="https://www.apache.org/"
-			/>
-			<item	name="Logging Services"
-					href="https://logging.apache.org/"
-			/>
-			<item	name="GitHub"
-					href="https://github.com/apache/logging-log4cxx"
-			/>
-		</links>
-
-		<menu	name="About"
-				img="icon-home">
-			<item	name="What is log4cxx?"
-					href="/index.html"
-			/>
-			<item	name="Project Information"
-					href="project-info.html"
-			/>
-			<item	name="Generated Reports"
-					href="project-reports.html"
-			/>
-		</menu>
-
-		<menu	name="Usage"
-				img="icon-book">
-			<item	name="How to use log4cxx?"
-					href="/usage.html"
-			/>
-			<item	name="API Documentation"
-					href="/apidocs/index.html"
-			/>
-			<item	name="FAQ"
-					href="/faq.html"
-			/>
-		</menu>
-
-		<menu	name="Get"
-				img="icon-cog">
-			<item	name="Download"
-					href="/download.html"
-			/>
-			<item	name="Changes"
-					href="/changes-report.html"
-			/>
-			<item	name="License"
-					href="/license.html"
-			/>
-		</menu>
-
-		<menu	name="Community"
-				img="icon-pencil">
-			<item	name="Mailing Lists"
-					href="/mail-lists.html"
-			/>
-			<item	name="Issue Tracking"
-					href="/community/issue-tracking.html"
-			/>
-			<item	name="Wiki"
-					href="https://wiki.apache.org/logging-log4cxx"
-			/>
-		</menu>
-
-		<menu	name="Development"
-				img="icon-pencil">
-			<item	name="Repository"
-					href="/source-repository.html"
-			/>
-			<item	name="Dependencies"
-					href="dependencies.html"
-			/>
-			<item	name="Building"
-					href="/building/index.html">
-				<item	name="Apache Maven 2"
-						href="/building/maven.html"
-				/>
-				<item	name="Autotools"
-						href="/building/autotools.html"
-				/>
-				<item	name="CMake"
-						href="/building/cmake.html"
-				/>
-				<item	name="Microsoft vcpkg"
-						href="/building/vcpkg.html"
-				/>
-			</item>
-		</menu>
-
-		<menu	name="Apache"
-				img="icon-info-sign">
-			<item	name="Home"
-					href="https://www.apache.org"
-			/>
-			<item	name="Sponsorship"
-					href="https://www.apache.org/foundation/sponsorship.html"
-			/>
-			<item	name="Thanks"
-					href="https://www.apache.org/foundation/thanks.html"
-			/>
-			<item	name="Conferences"
-					href="https://www.apachecon.com"
-			/>
-		</menu>
-	</body>
-</project>
diff --git a/src/site/xdoc/Makefile.am b/src/site/xdoc/Makefile.am
deleted file mode 100644
index 8e6be87..0000000
--- a/src/site/xdoc/Makefile.am
+++ /dev/null
@@ -1,15 +0,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.
-#
diff --git a/src/site/xdoc/usage.xml b/src/site/xdoc/usage.xml
deleted file mode 100644
index ad272ca..0000000
--- a/src/site/xdoc/usage.xml
+++ /dev/null
@@ -1,1062 +0,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>
-	<properties>
-		<title>How to use Apache log4cxx</title>
-	</properties>
-
-	<body>
-		<section name="Loggers">
-			<p>
-				Log4cxx has three main components: <em>loggers</em>,
-				<em>appenders</em> and <em>layouts</em>. These three types of
-				components work together to enable developers to log messages according
-				to message type and level, and to control at runtime how these
-				messages are formatted and where they are reported.
-			</p>
-
-			<subsection name="Hierarchy">
-				<p>
-					The first and foremost advantage of any logging API over plain
-					<code>std::cout</code> resides in its ability to disable
-					certain log statements while allowing others to print unhindered. This
-					capability assumes that the logging space, that is, the space of all
-					possible logging statements, is categorized according to some
-					developer-chosen criteria.
-				</p>
-
-				<p>
-					Loggers are named entities. Logger names are case-sensitive and
-					they follow the hierarchical naming rule:
-				</p>
-
-				<dl>
-					<dt><strong>Named Hierarchy</strong></dt>
-					<dd>
-						A logger is said to be an <em>ancestor</em> of another
-						logger if its name followed by a dot is a prefix of the
-						<em>descendant</em> logger name. A logger is said to be a
-						<em>parent</em> of a <em>child</em> logger if there are no
-						ancestors between itself and the descendant logger.
-					</dd>
-				</dl>
-
-				<p>
-					For example, the logger named <code>"com.foo"</code> is a parent
-					of the logger named <code>"com.foo.Bar"</code>.  Similarly,
-					<code>"java"</code> is a parent of <code>"java.util"</code> and an
-					ancestor of <code>"java.util.Vector"</code>. This naming scheme
-					should be familiar to most developers.
-				</p>
-
-				<p>
-					The root logger resides at the top of the logger hierarchy. It
-					is exceptional in two ways:
-				</p>
-
-				<ol>
-					<li> it always exists,</li>
-					<li> it cannot be retrieved by name.</li>
-				</ol>
-
-				<p>
-					Invoking the class static <a href="apidocs/classlog4cxx_1_1_logger.html#afc0e4d99cab7c38a2851d41e6edc1dee">log4cxx::Logger::getRootLogger</a>
-					method retrieves it. All other loggers are instantiated and retrieved with the class static
-					<a href="apidocs/classlog4cxx_1_1_logger.html#a76017df17da02bc11bfe50e47de703a3">log4cxx::Logger::getLogger</a>
-					method. This method takes the name of the desired logger as a parameter. Some of the basic methods in the Logger
-					class are listed below.
-				</p>
-
-				<pre class="prettyprint linenums">
-namespace log4cxx {
-	class <strong>Logger</strong> {
-		public:
-			// Creation &amp; retrieval methods:
-			static LoggerPtr getRootLogger();
-			static LoggerPtr getLogger(const std::string&amp; name);
-			static LoggerPtr getLogger(const std::wstring&amp; name);
-	}
-}
-
-//
-// Use these macros instead of calling Logger methods directly.
-// Macros will handle char or wchar_t pointers or strings
-// or most right-hand side expressions of an
-// std::basic_string::operator&lt;&lt;.
-//
-#define LOG4CXX_TRACE(logger, expression) ...
-#define LOG4CXX_DEBUG(logger, expression) ...
-#define LOG4CXX_INFO(logger, expression) ...
-#define LOG4CXX_WARN(logger, expression) ...
-#define LOG4CXX_ERROR(logger, expression) ...
-#define LOG4CXX_FATAL(logger, expression) ...</pre>
-			</subsection>
-
-			<subsection name="Levels">
-				<p>
-					Loggers <em>may</em> be assigned levels. The pre-defined
-					levels: TRACE, DEBUG, INFO, WARN, ERROR and FATAL are defined in the
-					<code><a href="apidocs/classlog4cxx_1_1_level.html">log4cxx::Level</a></code>
-					class which provides accessor functions.
-				</p>
-
-				<p>
-					If a given logger is not assigned a level, then it inherits
-					one from its closest ancestor with an assigned level. More
-					formally:
-				</p>
-
-				<dl>
-					<dt><strong>Level Inheritance</strong></dt>
-
-					<dd>
-						The <em>inherited level</em> for a given logger <i>C</i>, is equal to the
-						first non-null level in the logger hierarchy, starting at <i>C</i> and
-						proceeding upwards in the hierarchy towards the <code>root</code> logger.
-					</dd>
-				</dl>
-
-				<p>
-					To ensure that all loggers can eventually inherit a level,
-					the root logger always has an assigned level.
-				</p>
-
-				<p>
-					Below are four tables with various assigned level values and the
-					resulting inherited levels according to the above rule.
-				</p>
-
-				<table border="1">
-					<tr>
-						<th>Logger name</th>
-						<th>Assigned level</th>
-						<th>Inherited level</th>
-					</tr>
-					<tr align="left">
-						<td>root</td>
-						<td>Proot</td>
-						<td>Proot</td>
-					</tr>
-					<tr align="left">
-						<td>X </td>
-						<td>none</td>
-						<td>Proot</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y </td>
-						<td>none</td>
-						<td>Proot</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y.Z</td>
-						<td>none</td>
-						<td>Proot</td>
-					</tr>
-					<caption align="bottom">Example 1</caption>
-				</table>
-
-				<p>
-					In example 1 above, only the root logger is assigned a
-					level. This level value, <code>Proot</code>, is inherited by the
-					other loggers <code>X</code>, <code>X.Y</code> and
-					<code>X.Y.Z</code>.
-				</p>
-
-				<table border="1">
-					<tr>
-						<th>Logger name</th>
-						<th>Assigned level</th>
-						<th>Inherited level</th>
-					</tr>
-					<tr align="left">
-						<td>root</td>
-						<td>Proot</td>
-						<td>Proot</td>
-					</tr>
-					<tr align="left">
-						<td>X </td>
-						<td>Px</td>
-						<td>Px</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y </td>
-						<td>Pxy</td>
-						<td>Pxy</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y.Z</td>
-						<td>Pxyz</td>
-						<td>Pxyz</td>
-					</tr>
-					<caption align="bottom">Example 2</caption>
-				</table>
-
-				<p>
-					In example 2, all loggers have an assigned level value. There
-					is no need for level inheritence.
-				</p>
-
-				<table border="1">
-					<tr>
-						<th>Logger name</th>
-						<th>Assigned level</th>
-						<th>Inherited level</th>
-					</tr>
-					<tr align="left">
-						<td>root</td>
-						<td>Proot</td>
-						<td>Proot</td>
-					</tr>
-					<tr align="left">
-						<td>X </td>
-						<td>Px</td>
-						<td>Px</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y </td>
-						<td>none</td>
-						<td>Px</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y.Z</td>
-						<td>Pxyz</td>
-						<td>Pxyz</td>
-					</tr>
-					<caption align="bottom">Example 3</caption>
-				</table>
-
-				<p>
-					In example 3, the loggers <code>root</code>, <code>X</code> and
-					<code>X.Y.Z</code> are assigned the levels <code>Proot</code>,
-					<code>Px</code> and <code>Pxyz</code> respectively. The logger
-					<code>X.Y</code> inherits its level value from its parent
-					<code>X</code>.
-				</p>
-
-				<table border="1">
-					<tr>
-						<th>Logger name</th>
-						<th>Assigned level</th>
-						<th>Inherited level</th>
-					</tr>
-					<tr align="left">
-						<td>root</td>
-						<td>Proot</td>
-						<td>Proot</td>
-						</tr>
-					<tr align="left">
-						<td>X </td>
-						<td>Px</td>
-						<td>Px</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y </td>
-						<td>none</td>
-						<td>Px</td>
-					</tr>
-					<tr align="left">
-						<td>X.Y.Z</td>
-						<td>none</td>
-						<td>Px</td>
-					</tr>
-					<caption align="bottom">Example 4</caption>
-				</table>
-
-				<p>
-					In example 4, the loggers <code>root</code> and <code>X</code>
-					and are assigned the levels <code>Proot</code> and <code>Px</code>
-					respectively. The loggers <code>X.Y</code> and <code>X.Y.Z</code>
-					inherits their level value from their nearest parent <code>X</code>
-					having an assigned level.
-				</p>
-			</subsection>
-
-			<subsection name="Requests">
-				<p>
-					Logging requests are made by invoking a method of
-					a logger instance, preferrably through the use of LOG4CXX_INFO or similar
-					macros which support short-circuiting if the threshold is not satisfied
-					and use of the insertion operator (&lt;&lt;) in the message parameter.
-				</p>
-
-				<pre class="prettyprint linenums">
-log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger(<strong>"com.foo"</strong>));
-const char* region = "World";
-LOG4CXX_INFO(logger, "Simple message text.")
-LOG4CXX_INFO(logger, "Hello, " &lt;&lt; region)
-LOG4CXX_DEBUG(logger, L"Iteration " &lt;&lt; i)
-LOG4CXX_DEBUG(logger, "e^10 = " &lt;&lt; std::scientific &lt;&lt; exp(10.0))
-//
-// Use a wchar_t first operand to force use of wchar_t based stream.
-//
-LOG4CXX_WARN(logger, L"" &lt;&lt; i &lt;&lt; L" is the number of the iteration.")</pre>
-
-				<p>
-					A logging request is said to be <em>enabled</em> if its level is
-					higher than or equal to the level of its logger. Otherwise, the
-					request is said to be <em>disabled</em>. A logger without an
-					assigned level will inherit one from the hierarchy. This rule is
-					summarized below.
-				</p>
-
-				<dl>
-					<dt><strong>Basic Selection Rule</strong></dt>
-
-					<dd>
-						A log request of level <i>p</i> in a logger with (either assigned or
-						inherited, whichever is appropriate) level <i>q</i>, is enabled if
-						<i>p &gt;= q</i>.
-					</dd>
-				</dl>
-
-				<p>
-					This rule is at the heart of log4cxx. It assumes that levels are
-					ordered. For the standard levels, we have <code>TRACE &lt; DEBUG &lt; INFO
-					&lt; WARN &lt; ERROR &lt; FATAL</code>.
-				</p>
-
-				<p>
-					Here is an example of this rule.
-				</p>
-
-				<pre class="prettyprint linenums">
-// get a logger instance named "com.foo"
-log4cxx::LoggerPtr  logger(log4cxx::Logger::getLogger(<strong>"com.foo"</strong>));
-
-// Now set its level. Normally you do not need to set the
-// level of a logger programmatically. This is usually done
-// in configuration files.
-<strong>logger</strong>->setLevel(<strong class="set-level-highlight">log4cxx::Level::getInfo()</strong>);
-
-log4cxx::LoggerPtr barlogger(log4cxx::Logger::getLogger(<strong>"com.foo.Bar"</strong>));
-
-// This request is enabled, because <strong class="log-level compare-a">WARN</strong> &gt;= <strong class="log-level compare-b">INFO</strong>.
-LOG4CXX_WARN(logger, "Low fuel level.")
-
-// This request is disabled, because <strong class="log-level compare-a">DEBUG</strong> &lt; <strong class="log-level compare-b">INFO</strong>.
-LOG4CXX_DEBUG(logger, "Starting search for nearest gas station.")
-
-// The logger instance barlogger, named "com.foo.Bar",
-// will inherit its level from the logger named
-// "com.foo" Thus, the following request is enabled
-// because <strong class="log-level compare-a">INFO</strong> &gt;= <strong class="log-level compare-b">INFO</strong>.
-LOG4CXX_INFO(barlogger. "Located nearest gas station.")
-
-// This request is disabled, because <strong class="log-level compare-a">DEBUG</strong> &lt; <strong class="log-level compare-b">INFO</strong>.
-LOG4CXX_DEBUG(barlogger, "Exiting gas station search")</pre>
-
-				<p>
-					Calling the <code>getLogger</code> method with the same name will
-					always return a reference to the exact same logger object.
-				</p>
-
-				<p>
-					For example, in
-				</p>
-
-				<pre class="prettyprint linenums">
-log4cxx::LoggerPtr x = log4cxx::Logger::getLogger("wombat");
-log4cxx::LoggerPtr y = log4cxx::Logger::getLogger("wombat");</pre>
-				<p>
-					<code>x</code> and <code>y</code> refer to <em>exactly</em> the same logger object.
-				</p>
-
-				<p>
-					Thus, it is possible to configure a logger and then to retrieve
-					the same instance somewhere else in the code without passing around
-					references. In fundamental contradiction to biological parenthood,
-					where parents always preceed their children, log4cxx loggers can be
-					created and configured in any order. In particular, a "parent"
-					logger will find and link to its descendants even if it is
-					instantiated after them.
-				</p>
-
-				<p>
-					Configuration of the log4cxx environment is typically done at
-					application initialization. The preferred way is by reading a
-					configuration file. This approach will be discussed shortly.
-				</p>
-
-				<p>
-					Log4cxx makes it easy to name loggers by <em>software
-					component</em>.  This can be accomplished by statically instantiating
-					a logger in each class, with the logger name equal to the fully
-					qualified name of the class. This is a useful and straightforward
-					method of defining loggers. As the log output bears the name of the
-					generating logger, this naming strategy makes it easy to identify
-					the origin of a log message.  However, this is only one possible,
-					albeit common, strategy for naming loggers. Log4cxx does not restrict
-					the possible set of loggers. The developer is free to name the
-					loggers as desired.
-				</p>
-
-				<p>
-					Nevertheless, naming loggers after the class where they are
-					located seems to be the best strategy known so far.
-				</p>
-			</subsection>
-		</section>
-
-		<section name="Appenders and Layouts">
-			<p>
-				The ability to selectively enable or disable logging requests based
-				on their logger is only part of the picture. Log4cxx allows logging
-				requests to print to multiple destinations. In log4cxx speak, an output
-				destination is called an <em>appender</em>. Currently, appenders exist
-				for the <a href="apidocs/classlog4cxx_1_1_console_appender.html">console</a>,
-				<a href="apidocs/classlog4cxx_1_1_file_appender.html">files</a>, GUI
-				components, <a href="apidocs/classlog4cxx_1_1net_1_1_socket_appender.html">remote socket</a>
-				servers, <a href="apidocs/classlog4cxx_1_1nt_1_1_n_t_event_log_appender.html"> NT Event Loggers</a>, and remote UNIX
-				<a href="apidocs/classlog4cxx_1_1net_1_1_syslog_appender.html">Syslog</a>
-				daemons. It is also possible to log <a href="apidocs/classlog4cxx_1_1_async_appender.html">asynchronously</a>.
-			</p>
-
-			<p>More than one appender can be attached to a logger.</p>
-
-			<p>
-				The <a href="apidocs/classlog4cxx_1_1_logger.html#a7c0629acee8dbd1251474bea15d7c9e2">addAppender</a>
-				method adds an appender to a given logger.
-
-				<strong>
-					Each enabled logging request for a given logger will be forwarded to all the
-					appenders in that logger as well as the appenders higher in the hierarchy.
-				</strong>
-				In other words, appenders are inherited additively from the logger hierarchy.
-				For example, if a console appender is added to the root logger, then all enabled
-				logging requests will at least print on the console. If in addition a file appender
-				is added to a logger, say <em>C</em>, then enabled logging requests for <em>C</em> and
-				<em>C</em>'s children will print on a file <em>and</em> on the console. It is possible
-				to override this default behavior so that appender accumulation is no longer additive
-				by <a href="apidocs/classlog4cxx_1_1_logger.html#a80f9397947dba9071ad485f178257c17">setting the additivity flag</a> to
-				<code>false</code>.
-			</p>
-
-			<p>The rules governing appender additivity are summarized below.</p>
-
-			<dl>
-				<dt><strong>Appender Additivity</strong></dt>
-
-				<dd>
-					The output of a log statement of logger <i>C</i> will go to all the appenders
-					in <i>C</i> and its ancestors. This is the meaning of the term "appender
-					additivity". However, if an ancestor of logger <i>C</i>, say <i>P</i>, has the
-					additivity flag set to <code>false</code>, then <i>C</i>'s output will be
-					directed to all the appenders in <i>C</i> and it's ancestors up to and
-					including <i>P</i> but, not the appenders in any of the ancestors of <i>P</i>.
-					<br /><br />
-					Loggers have their additivity flag set to <code>true</code> by default.
-				</dd>
-			</dl>
-
-			<p>The table below shows an example:</p>
-
-			<table align="center" border="3" cellpadding="10">
-				<tr rowspan="2">
-					<th>Logger Name </th>
-					<th>Added Appenders</th>
-					<th>Additivity Flag</th>
-					<th>Output Targets</th>
-					<th>Comment</th>
-				</tr>
-				<tr>
-					<td>root</td>
-					<td>A1</td>
-					<td>not applicable</td>
-					<td>A1</td>
-					<td>
-						The root logger is anonymous but can be accessed with the
-						log4cxx::Logger::getRootLogger() method. There is no default appender
-						attached to root.
-					</td>
-				</tr>
-				<tr>
-					<td>x</td>
-					<td>A-x1, A-x2</td>
-					<td>true</td>
-					<td>A1, A-x1, A-x2</td>
-					<td>Appenders of "x" and root.</td>
-				</tr>
-				<tr>
-					<td>x.y</td>
-					<td>none</td>
-					<td>true</td>
-					<td>A1, A-x1, A-x2</td>
-					<td>Appenders of "x" and root.</td>
-				</tr>
-				<tr>
-					<td>x.y.z</td>
-					<td>A-xyz1</td>
-					<td>true</td>
-					<td>A1, A-x1, A-x2, A-xyz1</td>
-					<td>Appenders in "x.y.z", "x" and root.</td>
-				</tr>
-				<tr>
-					<td>security</td>
-					<td>A-sec</td>
-					<td>
-						<span class="activity-flag-highlight">false</span>
-					</td>
-					<td>A-sec</td>
-					<td>
-						No appender accumulation since the additivity flag is set to <code>false</code>.
-					</td>
-				</tr>
-				<tr>
-					<td>security.access</td>
-					<td>none</td>
-					<td>true</td>
-					<td>A-sec</td>
-					<td>
-						Only appenders of "security" because the additivity flag in "security" is
-						set to <code>false</code>.
-					</td>
-				</tr>
-			</table>
-
-			<p>
-				More often than not, users wish to customize not only the output
-				destination but also the output format. This is accomplished by
-				associating a <em>layout</em> with an appender. The layout is
-				responsible for formatting the logging request according to the user's
-				wishes, whereas an appender takes care of sending the formatted output
-				to its destination.
-			</p>
-
-			<p>
-				The <a href="apidocs/classlog4cxx_1_1_pattern_layout.html">PatternLayout</a>, part
-				of the standard log4cxx distribution, lets the user specify the output
-				format according to conversion patterns similar to the C language
-				<code>printf</code> function.
-			</p>
-
-			<p>
-				For example, the PatternLayout with the conversion pattern "%r [%t]
-				%-5p %c - %m%n" will output something akin to:
-			</p>
-
-			<pre class="prettyprint linenums">
-176 [main] INFO org.foo.Bar - Located nearest gas station.</pre>
-
-			<p>
-				The first field is the number of milliseconds elapsed since the
-				start of the program.  The second field is the thread making the log
-				request.  The third field is the level of the log statement. The
-				fourth field is the name of the logger associated with the log
-				request. The text after the '-' is the message of the statement.
-			</p>
-		</section>
-
-		<section name="Configuration">
-			<p>
-				Inserting log requests into the application code requires a fair
-				amount of planning and effort. Observation shows that approximately 4
-				percent of code is dedicated to logging. Consequently, even moderately
-				sized applications will have thousands of logging statements embedded
-				within their code.  Given their number, it becomes imperative to
-				manage these log statements without the need to modify them manually.
-			</p>
-
-			<p>
-				The log4cxx environment is fully configurable programmatically.
-				However, it is far more flexible to configure log4cxx using
-				configuration files.  Currently, configuration files can be written in
-				XML or in Java properties (key=value) format.
-			</p>
-
-			<p>
-				Let us give a taste of how this is done with the help of an
-				imaginary application <code>MyApp</code> that uses log4cxx.
-			</p>
-
-			<pre class="prettyprint linenums">
-#include "com/foo/bar.h"
-using namespace com::foo;
-
-// include log4cxx header files.
-#include "log4cxx/logger.h"
-#include "log4cxx/basicconfigurator.h"
-#include "log4cxx/helpers/exception.h"
-
-using namespace log4cxx;
-using namespace log4cxx::helpers;
-
-LoggerPtr logger(Logger::getLogger("MyApp"));
-
-int main(int argc, char **argv)
-{
-	int result = EXIT_SUCCESS;
-	try
-	{
-		// Set up a simple configuration that logs on the console.
-		BasicConfigurator::configure();
-
-		LOG4CXX_INFO(logger, "Entering application.")
-		Bar bar;
-		bar.doIt();
-		LOG4CXX_INFO(logger, "Exiting application.")
-	}
-	catch(Exception&amp;)
-	{
-		result = EXIT_FAILURE;
-	}
-
-	return result;
-}</pre>
-
-			<p>
-				<code>MyApp</code> begins by including log4cxx headers. It
-				then defines a static logger variable with the name <code>MyApp</code>
-				which happens to be the fully qualified name of the
-				class.
-			</p>
-
-			<p>
-				<code>MyApp</code> uses the <code>Bar</code> class defined in header
-				file <code>com/foo/bar.h</code>.
-			</p>
-
-				<pre class="prettyprint linenums">
-// file com/foo/bar.h
-#include "log4cxx/logger.h"
-
-namespace com {
-	namespace foo {
-		class Bar {
-			static log4cxx::LoggerPtr logger;
-
-			public:
-				void doIt();
-		}
-	}
-}</pre>
-
-				<pre class="prettyprint linenums">
-// file bar.cpp
-#include "com/foo/bar.h"
-
-using namespace com::foo;
-using namespace log4cxx;
-
-LoggerPtr Bar::logger(Logger::getLogger("com.foo.bar"));
-
-void Bar::doIt() {
-	LOG4CXX_DEBUG(logger, "Did it again!")
-}</pre>
-
-			<p>
-				The invocation of the <a href="apidocs/classlog4cxx_1_1_basic_configurator.html#a4f96a09e1372664e3556ce94ace4a70c">BasicConfigurator::configure</a>
-				method creates a rather simple log4cxx setup. This method is hardwired
-				to add to the root logger a <a href="apidocs/classlog4cxx_1_1_console_appender.html">
-				ConsoleAppender</a>. The output will be formatted using a
-				<a href="apidocs/classlog4cxx_1_1_pattern_layout.html">PatternLayout</a> set
-				to the pattern "%-4r [%t] %-5p %c %x - %m%n".
-			</p>
-
-			<p>
-				Note that by default, the root logger is assigned to
-				<code>Level::getDebug()</code>.
-			</p>
-
-			<p>
-				The output of MyApp is:
-			</p>
-
-			<pre class="prettyprint linenums">
-0    [12345] INFO  MyApp  - Entering application.
-36   [12345] DEBUG com.foo.Bar  - Did it again!
-51   [12345] INFO  MyApp  - Exiting application.</pre>
-
-			<p>
-				The previous example always outputs the same log information.
-				Fortunately, it is easy to modify <code>MyApp</code> so that the log
-				output can be controlled at run-time. Here is a slightly modified
-				version.
-			</p>
-
-			<pre class="prettyprint linenums">
-// file MyApp2.cpp
-
-#include "com/foo/bar.h"
-using namespace com::foo;
-
-// include log4cxx header files.
-#include "log4cxx/logger.h"
-#include "log4cxx/basicconfigurator.h"
-#include "log4cxx/propertyconfigurator.h"
-#include "log4cxx/helpers/exception.h"
-
-using namespace log4cxx;
-using namespace log4cxx::helpers;
-// Define a static logger variable so that it references the
-// Logger instance named "MyApp".
-LoggerPtr logger(Logger::getLogger("MyApp"));
-
-int main(int argc, char **argv)
-{
-	int result = EXIT_SUCCESS;
-	try
-	{
-		if (argc > 1)
-		{
-			// BasicConfigurator replaced with PropertyConfigurator.
-			PropertyConfigurator::configure(argv[1]);
-		}
-		else
-		{
-			BasicConfigurator::configure();
-		}
-
-		LOG4CXX_INFO(logger, "Entering application.")
-		Bar bar
-		bar.doIt();
-		LOG4CXX_INFO(logger, "Exiting application.")
-	}
-	catch(Exception&amp;)
-	{
-		result = EXIT_FAILURE;
-	}
-
-	return result;
-}</pre>
-
-			<p>
-				This version of <code>MyApp</code> instructs
-				<code>PropertyConfigurator</code> to parse a configuration file and
-				set up logging accordingly.
-			</p>
-
-			<p>
-				Here is a sample configuration file that results in exactly same
-				output as the previous <code>BasicConfigurator</code> based example.
-			</p>
-
-			<pre class="prettyprint linenums">
-# Set root logger level to DEBUG and its only appender to A1.
-log4j.rootLogger=DEBUG, A1
-
-# A1 is set to be a ConsoleAppender.
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n</pre>
-
-			<p>
-				It can be noticed that the PropertyConfigurator file format is the same as log4j.
-			</p>
-
-			<p>
-				Suppose we are no longer interested in seeing the output of any
-				component belonging to the <code>com::foo</code> package. The following
-				configuration file shows one possible way of achieving this.
-			</p>
-
-			<pre class="prettyprint linenums">
-log4j.rootLogger=DEBUG, A1
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-
-# <strong>Print the date in ISO 8601 format</strong>
-log4j.appender.A1.layout.ConversionPattern=<strong>%d</strong> [%t] %-5p %c - %m%n
-
-# Print only messages of level WARN or above in the package com.foo.
-<strong>log4j.logger.com.foo=WARN</strong></pre>
-
-			<p>
-				The output of <code>MyApp</code> configured with this file is shown below.
-			</p>
-
-			<pre class="prettyprint linenums">
-<strong>2000-09-07 14:07:41,508</strong> [12345] INFO  MyApp - Entering application.
-<strong>2000-09-07 14:07:41,529</strong> [12345] INFO  MyApp - Exiting application.</pre>
-
-			<p>
-				As the logger <code>com.foo.Bar</code> does not have an assigned
-				level, it inherits its level from <code>com.foo</code>, which
-				was set to WARN in the configuration file. The log statement from the
-				<code>Bar::doIt</code> method has the level DEBUG, lower than the
-				logger level WARN. Consequently, <code>doIt()</code> method's log
-				request is suppressed.
-			</p>
-
-			<p>
-				Here is another configuration file that uses multiple appenders.
-			</p>
-
-			<pre class="prettyprint linenums">
-log4j.rootLogger=debug, <strong>stdout, R</strong>
-
-log4j.appender.<strong>stdout</strong>=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
-# Pattern to output the caller's file name and line number.
-log4j.appender.stdout.layout.ConversionPattern=%5p [%t] <strong>(%F:%L)</strong> - %m%n
-
-log4j.appender.<strong>R</strong>=org.apache.log4j.RollingFileAppender
-log4j.appender.R.File=example.log
-
-log4j.appender.R.MaxFileSize=<strong>100KB</strong>
-# Keep one backup file
-log4j.appender.R.MaxBackupIndex=1
-
-log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n</pre>
-
-			<p>
-				Calling the enhanced MyApp with the this configuration file will
-				output the following on the console.
-			</p>
-
-			<pre class="prettyprint linenums">
-INFO [12345] <strong>(MyApp2.cpp:31)</strong> - Entering application.
-DEBUG [12345] (Bar.h:16) - Doing it again!
-INFO [12345] (MyApp2.cpp:34) - Exiting application.</pre>
-
-			<p>
-				In addition, as the root logger has been allocated a second
-				appender, output will also be directed to the <code>example.log</code>
-				file. This file will be rolled over when it reaches 100KB. When
-				roll-over occurs, the old version of <code>example.log</code> is
-				automatically moved to <code>example.log.1</code>.
-			</p>
-
-			<p>
-				Note that to obtain these different logging behaviors we did not
-				need to recompile code. We could just as easily have logged to a UNIX
-				Syslog daemon, redirected all <code>com.foo</code> output to an NT
-				Event logger, or forwarded logging events to a remote log4cxx server,
-				which would log according to local server policy, for example by
-				forwarding the log event to a second log4cxx server.
-			</p>
-		</section>
-
-		<section name="Default Initialization Procedure">
-			<p>
-				The log4cxx library does not make any assumptions about its
-				environment. In particular, there are no default log4cxx
-				appenders. Under certain well-defined circumstances however, the
-				static inializer of the <code>Logger</code> class will attempt to
-				automatically configure log4cxx.
-			</p>
-
-			<p>
-				The exact default initialization algorithm is defined as follows:
-			</p>
-
-			<ol>
-				<li>
-					<p>
-						Set the configurationOptionStr string variable to the value of the
-						<strong>LOG4CXX_CONFIGURATION</strong> environment variable if set, otherwise
-						the value of the <strong>log4j.configuration</strong> environment variable
-						if set, otherwise the first of the following file names which exist in the
-						current working directory, "log4cxx.xml", "log4cxx.properties",
-						"log4j.xml" and "log4j.properties". If configurationOptionStr has not been
-						set, then disable logging.
-					</p>
-				</li>
-				<li>
-					<p>
-						Unless a custom configurator is specified using the
-						<strong>LOG4CXX_CONFIGURATOR_CLASS</strong> or <strong>log4j.configuratorClass</strong>
-						environment variable, the PropertyConfigurator will be used to configure
-						log4cxx unless the file name ends with the ".xml" extension,
-						in which case the DOMConfigurator will be used.
-						If a custom configurator is specified, the environment variable
-						should contain a fully qualified class name of a class that
-						implements the Configurator interface.
-					</p>
-				</li>
-			</ol>
-		</section>
-
-		<section name="Nested Diagnostic Contexts">
-			<p>
-				Most real-world systems have to deal with multiple clients
-				simultaneously. In a typical multithreaded implementation of such a
-				system, different threads will handle different clients. Logging is
-				especially well suited to trace and debug complex distributed
-				applications. A common approach to differentiate the logging output of
-				one client from another is to instantiate a new separate logger for
-				each client. This promotes the proliferation of loggers and
-				increases the management overhead of logging.
-			</p>
-
-			<p>
-				A lighter technique is to uniquely stamp each log request initiated
-				from the same client interaction. Neil Harrison described this method
-				in the book "Patterns for Logging Diagnostic Messages," in <em>Pattern
-				Languages of Program Design 3</em>, edited by R. Martin, D.  Riehle,
-				and F. Buschmann (Addison-Wesley, 1997).
-			</p>
-
-			<p>
-				To uniquely stamp each request, the
-				user pushes contextual information into the NDC, the abbreviation of
-				<em>Nested Diagnostic Context</em>. The NDC class is shown below.
-			</p>
-
-			<pre class="prettyprint linenums">
-namespace log4cxx {
-	class NDC {
-		public:
-			// pushes the value on construction and pops on destruction.
-			NDC(const std::string&amp; value);
-			NDC(const std::wstring&amp; value);
-
-			// Remove the top of the context from the NDC.
-			<strong>static</strong> LogString pop();
-
-			// Add diagnostic context for the current thread.
-			<strong>static</strong> void push(const std::string&amp; message);
-			<strong>static</strong> void push(const std::wstring&amp; message);
-	}
-}</pre>
-
-			<p>
-				The NDC is managed per thread as a <em>stack</em> of contextual
-				information. Note that all methods of the <code>log4cxx::NDC</code>
-				class are static. Assuming that NDC printing is turned on, every time
-				a log request is made, the appropriate log4cxx component will include
-				the <em>entire</em> NDC stack for the current thread in the log
-				output. This is done without the intervention of the user, who is
-				responsible only for placing the correct information in the NDC by
-				using the <code>push</code> and <code>pop</code> methods at a few
-				well-defined points in the code.  In contrast, the per-client logger
-				approach commands extensive changes in the code.
-			</p>
-
-			<p>
-				To illustrate this point, let us take the example of a servlet
-				delivering content to numerous clients. The servlet can build the NDC
-				at the very beginning of the request before executing other code. The
-				contextual information can be the client's host name and other
-				information inherent to the request, typically information contained
-				in cookies. Hence, even if the servlet is serving multiple clients
-				simultaneously, the logs initiated by the same code, i.e. belonging to
-				the same logger, can still be distinguished because each client
-				request will have a different NDC stack. Contrast this with the
-				complexity of passing a freshly instantiated logger to all code
-				exercised during the client's request.
-			</p>
-
-			<p>
-				Nevertheless, some sophisticated applications, such as virtual
-				hosting web servers, must log differently depending on the virtual
-				host context and also depending on the software component issuing the
-				request. Recent log4cxx releases support multiple hierarchy trees. This
-				enhancement allows each virtual host to possess its own copy of the
-				logger hierarchy.
-			</p>
-		</section>
-
-		<section name="Performance">
-			<p>
-				One of the often-cited arguments against logging is its
-				computational cost. This is a legitimate concern as even moderately
-				sized applications can generate thousands of log requests. Much
-				effort was spent measuring and tweaking logging performance. Log4cxx
-				claims to be fast and flexible: speed first, flexibility second.
-			</p>
-
-			<p>
-				The user should be aware of the following performance issues.
-			</p>
-
-			<ol>
-				<li>
-					<p>
-						<strong>Logging performance when logging is turned off.</strong>
-					</p>
-
-					<p>
-						When logging is turned off entirely or just for a set
-						of levels, the cost of a log request consists of a method
-						invocation plus an integer comparison.  The LOG4CXX_DEBUG and similar
-						macros suppress unnecessary expression evaluation if the
-						request is not enabled.
-					</p>
-				</li>
-
-				<li>
-					<p>
-						<strong>The performance of deciding whether to log or not to log when logging is turned on.</strong>
-					</p>
-
-					<p>
-						This is essentially the performance of walking the logger
-						hierarchy. When logging is turned on, log4cxx still needs to compare
-						the level of the log request with the level of the request
-						logger. However, loggers may not have an assigned
-						level; they can inherit them from the logger hierarchy. Thus,
-						before inheriting a level, the logger may need to search its
-						ancestors.
-					</p>
-
-					<p>
-						There has been a serious effort to make this hierarchy walk to
-						be as fast as possible. For example, child loggers link only to
-						their existing ancestors. In the <code>BasicConfigurator</code>
-						example shown earlier, the logger named <code>com.foo.Bar</code> is
-						linked directly to the root logger, thereby circumventing the
-						nonexistent <code>com</code> or <code>com.foo</code> loggers. This
-						significantly improves the speed of the walk, especially in "sparse"
-						hierarchies.
-					</p>
-
-					<p>
-						The cost of walking the hierarchy is typically 3
-						times slower than when logging is turned off entirely.
-					</p>
-				</li>
-				<li>
-					<p>
-						<strong>Actually outputting log messages</strong>
-					</p>
-
-					<p>
-						This is the cost of formatting the log output and sending it to
-						its target destination. Here again, a serious effort was made to
-						make layouts (formatters) perform as quickly as possible. The same
-						is true for appenders.
-					</p>
-				</li>
-			</ol>
-		</section>
-
-		<section name="Conclusions">
-			<p>
-				Apache Log4cxx is a popular logging package written in C++.  One of its
-				distinctive features is the notion of inheritance in loggers. Using
-				a logger hierarchy it is possible to control which log statements
-				are output at arbitrary granularity. This helps reduce the volume of
-				logged output and minimize the cost of logging.
-			</p>
-
-			<p>
-				One of the advantages of the log4cxx API is its manageability. Once
-				the log statements have been inserted into the code, they can be
-				controlled with configuration files. They can be selectively enabled
-				or disabled, and sent to different and multiple output targets in
-				user-chosen formats. The log4cxx package is designed so that log
-				statements can remain in shipped code without incurring a heavy
-				performance cost.
-			</p>
-		</section>
-	</body>
-</document>
\ No newline at end of file
diff --git a/src/test/cpp/Makefile.am b/src/test/cpp/Makefile.am
deleted file mode 100644
index 1f42361..0000000
--- a/src/test/cpp/Makefile.am
+++ /dev/null
@@ -1,196 +0,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.
-#
-noinst_HEADERS = \
-    $(top_srcdir)/src/test/cpp/abts.h \
-    $(top_srcdir)/src/test/cpp/abts_tests.h \
-    $(top_srcdir)/src/test/cpp/appenderskeletontestcase.h \
-    $(top_srcdir)/src/test/cpp/customlogger/xlogger.h \
-    $(top_srcdir)/src/test/cpp/fileappendertestcase.h \
-    $(top_srcdir)/src/test/cpp/helpers/localechanger.h \
-    $(top_srcdir)/src/test/cpp/insertwide.h \
-    $(top_srcdir)/src/test/cpp/logunit.h \
-    $(top_srcdir)/src/test/cpp/net/socketservertestcase.h \
-    $(top_srcdir)/src/test/cpp/pattern/num343patternconverter.h \
-    $(top_srcdir)/src/test/cpp/testchar.h \
-    $(top_srcdir)/src/test/cpp/testutil.h \
-    $(top_srcdir)/src/test/cpp/util/absolutedateandtimefilter.h \
-    $(top_srcdir)/src/test/cpp/util/absolutetimefilter.h \
-    $(top_srcdir)/src/test/cpp/util/binarycompare.h \
-    $(top_srcdir)/src/test/cpp/util/compare.h \
-    $(top_srcdir)/src/test/cpp/util/controlfilter.h \
-    $(top_srcdir)/src/test/cpp/util/filenamefilter.h \
-    $(top_srcdir)/src/test/cpp/util/filter.h \
-    $(top_srcdir)/src/test/cpp/util/iso8601filter.h \
-    $(top_srcdir)/src/test/cpp/util/linenumberfilter.h \
-    $(top_srcdir)/src/test/cpp/util/relativetimefilter.h \
-    $(top_srcdir)/src/test/cpp/util/serializationtesthelper.h \
-    $(top_srcdir)/src/test/cpp/util/threadfilter.h \
-    $(top_srcdir)/src/test/cpp/util/transformer.h \
-    $(top_srcdir)/src/test/cpp/util/xmlfilenamefilter.h \
-    $(top_srcdir)/src/test/cpp/util/xmllineattributefilter.h \
-    $(top_srcdir)/src/test/cpp/util/xmlthreadfilter.h \
-    $(top_srcdir)/src/test/cpp/util/xmltimestampfilter.h \
-    $(top_srcdir)/src/test/cpp/vectorappender.h \
-    $(top_srcdir)/src/test/cpp/writerappendertestcase.h \
-    $(top_srcdir)/src/test/cpp/xml/xlevel.h
-
-AM_CPPFLAGS = -I$(top_srcdir)/src/main/include -I$(top_builddir)/src/main/include
-
-check_PROGRAMS = testsuite
-
-customlogger_tests = \
-    customlogger/xlogger.cpp \
-    customlogger/xloggertestcase.cpp
-
-defaultinit_tests = \
-    defaultinit/testcase1.cpp \
-    defaultinit/testcase2.cpp \
-    defaultinit/testcase3.cpp \
-    defaultinit/testcase4.cpp
-
-filter_tests = \
-    filter/andfiltertest.cpp \
-    filter/denyallfiltertest.cpp \
-    filter/levelmatchfiltertest.cpp \
-    filter/levelrangefiltertest.cpp \
-    filter/loggermatchfiltertest.cpp \
-    filter/mapfiltertest.cpp \
-    filter/stringmatchfiltertest.cpp
-
-helpers = \
-    helpers/absolutetimedateformattestcase.cpp \
-    helpers/cacheddateformattestcase.cpp \
-    helpers/charsetdecodertestcase.cpp \
-    helpers/charsetencodertestcase.cpp \
-    helpers/cyclicbuffertestcase.cpp \
-    helpers/datetimedateformattestcase.cpp \
-    helpers/inetaddresstestcase.cpp \
-    helpers/iso8601dateformattestcase.cpp \
-    helpers/localechanger.cpp \
-    helpers/messagebuffertest.cpp \
-    helpers/optionconvertertestcase.cpp       \
-    helpers/propertiestestcase.cpp \
-    helpers/relativetimedateformattestcase.cpp \
-    helpers/stringtokenizertestcase.cpp \
-    helpers/stringhelpertestcase.cpp \
-    helpers/syslogwritertest.cpp \
-    helpers/threadtestcase.cpp \
-    helpers/timezonetestcase.cpp \
-    helpers/transcodertestcase.cpp
-
-net_tests = \
-    net/smtpappendertestcase.cpp \
-    net/socketappendertestcase.cpp \
-    net/sockethubappendertestcase.cpp \
-    net/socketservertestcase.cpp \
-    net/syslogappendertestcase.cpp \
-    net/telnetappendertestcase.cpp \
-    net/xmlsocketappendertestcase.cpp
-
-pattern_tests = \
-    pattern/num343patternconverter.cpp \
-    pattern/patternparsertestcase.cpp
-
-rolling_tests = \
-    rolling/filenamepatterntestcase.cpp \
-    rolling/filterbasedrollingtest.cpp \
-    rolling/manualrollingtest.cpp \
-    rolling/obsoletedailyrollingfileappendertest.cpp \
-    rolling/obsoleterollingfileappendertest.cpp \
-    rolling/sizebasedrollingtest.cpp \
-    rolling/timebasedrollingtest.cpp
-
-util = \
-    util/absolutetimefilter.cpp \
-    util/absolutedateandtimefilter.cpp \
-    util/binarycompare.cpp \
-    util/compare.cpp \
-    util/controlfilter.cpp \
-    util/filenamefilter.cpp \
-    util/utilfilter.cpp \
-    util/iso8601filter.cpp \
-    util/linenumberfilter.cpp \
-    util/relativetimefilter.cpp \
-    util/serializationtesthelper.cpp \
-    util/threadfilter.cpp \
-    util/transformer.cpp \
-    util/xmlfilenamefilter.cpp \
-    util/xmllineattributefilter.cpp \
-    util/xmltimestampfilter.cpp \
-    util/xmlthreadfilter.cpp
-
-varia_tests = \
-    varia/errorhandlertestcase.cpp \
-    varia/levelmatchfiltertestcase.cpp \
-    varia/levelrangefiltertestcase.cpp
-
-db_tests = \
-    db/odbcappendertestcase.cpp
-
-xml_tests = \
-    xml/customleveltestcase.cpp \
-    xml/domtestcase.cpp \
-    xml/xlevel.cpp \
-    xml/xmllayouttestcase.cpp \
-    xml/xmllayouttest.cpp
-
-nt_tests = \
-    nt/nteventlogappendertestcase.cpp
-
-testsuite_SOURCES = \
-    $(customlogger_tests) \
-    $(defaultinit_tests) \
-    $(filter_tests) \
-    $(helpers) \
-    $(net_tests) \
-    $(pattern_tests) \
-    $(rolling_tests) \
-    $(util) \
-    $(varia_tests) \
-    $(db_tests) \
-    $(xml_tests) \
-    $(nt_tests) \
-    abts.cpp \
-    asyncappendertestcase.cpp \
-    encodingtest.cpp \
-    filetestcase.cpp \
-    hierarchytest.cpp \
-    hierarchythresholdtestcase.cpp \
-    jsonlayouttest.cpp \
-    l7dtestcase.cpp \
-    leveltestcase.cpp \
-    logunit.cpp \
-    loggertestcase.cpp \
-    minimumtestcase.cpp \
-    patternlayouttest.cpp \
-    vectorappender.cpp \
-    appenderskeletontestcase.cpp \
-    consoleappendertestcase.cpp \
-    fileappendertestcase.cpp \
-    rollingfileappendertestcase.cpp \
-    streamtestcase.cpp \
-    writerappendertestcase.cpp \
-    ndctestcase.cpp \
-    propertyconfiguratortest.cpp \
-    mdctestcase.cpp
-
-testsuite_LDADD = \
-    $(top_builddir)/src/main/cpp/liblog4cxx.la
-
-testsuite_DEPENDENCIES = \
-    $(top_builddir)/src/main/cpp/liblog4cxx.la
-
-check: testsuite
diff --git a/src/test/resources/Makefile.am b/src/test/resources/Makefile.am
deleted file mode 100644
index d86a1ad..0000000
--- a/src/test/resources/Makefile.am
+++ /dev/null
@@ -1,63 +0,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.
-#
-SUBDIRS = input witness
-EXTRA_DIST = L7D_en_US.properties L7D_fr_CH.properties L7D_fr.properties
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
-
-prepare:
-	@test -d output || mkdir output
-	@rm -rf log4j.xml
-	@rm -rf log4j.properties
-	@rm -rf log4cxx.xml
-	@rm -rf log4cxx.properties
-
-build: check-recursive prepare
-
-clean-local:
-	@rm -rf output/*
-
-check: prepare run-unittest DefaultInit
-
-run-unittest: build clean-local
-	@export TOTO=wonderful; \
-	export key1=value1; \
-	export key2=value2; \
-	../cpp/testsuite -v
-
-DefaultInit: build clean-local
-	../cpp/testsuite -v testcase1
-	@cp input/xml/defaultInit.xml log4j.xml
-	../cpp/testsuite -v testcase2
-	@rm -f log4j.xml
-	@cp input/defaultInit3.properties log4j.properties
-	../cpp/testsuite -v testcase3
-	@rm -f log4j.properties
-	@cp input/defaultInit3.properties log4j.properties
-	@cp input/xml/defaultInit.xml log4j.xml
-	../cpp/testsuite -v testcase4
-	@rm -f log4j.xml
-	@rm -f log4j.properties
-
-SocketServer: build clean-local
-	../cpp/testsuite -v socketservertestcase
diff --git a/src/test/resources/input/Makefile.am b/src/test/resources/input/Makefile.am
deleted file mode 100644
index d3016ae..0000000
--- a/src/test/resources/input/Makefile.am
+++ /dev/null
@@ -1,58 +0,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.
-#
-SUBDIRS = ndc xml rolling
-EXTRA_DIST = \
-    defaultInit3.properties \
-    hierarchyThreshold1.properties \
-    hierarchyThreshold2.properties \
-    hierarchyThreshold3.properties \
-    hierarchyThreshold4.properties \
-    hierarchyThreshold5.properties \
-    hierarchyThreshold6.properties \
-    hierarchyThreshold7.properties \
-    hierarchyThreshold8.properties \
-    l7d1.properties \
-    patternLayout10.properties \
-    patternLayout11.properties \
-    patternLayout12.properties \
-    patternLayout1.properties \
-    patternLayout2.properties \
-    patternLayout3.properties \
-    patternLayout4.properties \
-    patternLayout5.properties \
-    patternLayout6.properties \
-    patternLayout7.properties \
-    patternLayout8.properties \
-    patternLayout9.properties \
-    patternLayout.mdc.1.properties \
-    propertiestestcase.properties \
-    socketServer1.properties \
-    socketServer2.properties \
-    socketServer3.properties \
-    socketServer4.properties \
-    socketServer5.properties \
-    socketServer6.properties \
-    socketServer7.properties \
-    socketServer8.properties
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/input/decoding/Makefile.am b/src/test/resources/input/decoding/Makefile.am
deleted file mode 100644
index c1a34ad..0000000
--- a/src/test/resources/input/decoding/Makefile.am
+++ /dev/null
@@ -1,31 +0,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.
-#
-EXTRA_DIST = \
-    ascii.txt \
-    latin1.txt \
-    UTF-16BE.txt \
-    UTF-16LE.txt \
-    UTF-16.txt \
-    UTF-8.txt
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/input/ndc/Makefile.am b/src/test/resources/input/ndc/Makefile.am
deleted file mode 100644
index e1e6cf3..0000000
--- a/src/test/resources/input/ndc/Makefile.am
+++ /dev/null
@@ -1,26 +0,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.
-#
-EXTRA_DIST = \
-    NDC1.properties
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/input/rolling/Makefile.am b/src/test/resources/input/rolling/Makefile.am
deleted file mode 100644
index d8083d2..0000000
--- a/src/test/resources/input/rolling/Makefile.am
+++ /dev/null
@@ -1,30 +0,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.
-#
-EXTRA_DIST = \
-    filter1.xml \
-    obsoleteDRFA1.properties \
-    obsoleteERFA1.properties \
-    obsoleteRFA1.properties \
-    time1.xml
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/input/xml/Makefile.am b/src/test/resources/input/xml/Makefile.am
deleted file mode 100644
index fc25cb7..0000000
--- a/src/test/resources/input/xml/Makefile.am
+++ /dev/null
@@ -1,45 +0,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.
-#
-EXTRA_DIST = \
-    log4j.dtd \
-    asyncAppender1.xml \
-    customLevel1.xml \
-    customLevel2.xml \
-    customLevel3.xml \
-    customLevel4.xml \
-    customLogger1.xml \
-    customLogger2.xml \
-    defaultInit.xml \
-    DOMTestCase1.xml \
-    DOMTestCase2.xml \
-    DOMTestCase3.xml \
-    DOMTestCase4.xml \
-    fallback1.xml \
-    filters.LevelMatchFilter.test4.0.xml \
-    filters.LevelMatchFilter.test4.1.xml \
-    filters.LevelMatchFilter.test4.2.xml \
-    filters.LevelMatchFilter.test4.3.xml \
-    filters.LevelMatchFilter.test4.4.xml \
-    smtpAppender1.xml
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/witness/Makefile.am b/src/test/resources/witness/Makefile.am
deleted file mode 100644
index bc5cfce..0000000
--- a/src/test/resources/witness/Makefile.am
+++ /dev/null
@@ -1,82 +0,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.
-#
-SUBDIRS = encoding ndc rolling
-EXTRA_DIST = \
-    customLevel.1 \
-    customLevel.2 \
-    customLevel.3 \
-    customLevel.4 \
-    customLogger.1 \
-    customLogger.2 \
-    dom.A1.1 \
-    dom.A1.2 \
-    dom.A2.1 \
-    dom.A2.2 \
-    fallback1 \
-    hierarchyThreshold.1 \
-    hierarchyThreshold.2 \
-    hierarchyThreshold.3 \
-    hierarchyThreshold.4 \
-    hierarchyThreshold.5 \
-    hierarchyThreshold.6 \
-    hierarchyThreshold.7 \
-    hierarchyThreshold.8 \
-    l7d.1 \
-    LevelMatchFilter_accept \
-    LevelMatchFilter_deny \
-    LevelRangeFilter_accept \
-    LevelRangeFilter_neutral \
-    NDCMatchFilter_accept \
-    NDCMatchFilter_deny \
-    patternLayout.1 \
-    patternLayout.10 \
-    patternLayout.11 \
-    patternLayout.12 \
-    patternLayout.2 \
-    patternLayout.3 \
-    patternLayout.4 \
-    patternLayout.5 \
-    patternLayout.6 \
-    patternLayout.7 \
-    patternLayout.8 \
-    patternLayout.9 \
-    patternLayout.mdc.1 \
-    patternLayout.mdc.2 \
-    simple \
-    socketServer.1 \
-    socketServer.2 \
-    socketServer.3 \
-    socketServer.4 \
-    socketServer.5 \
-    socketServer.6 \
-    socketServer.7 \
-    socketServer.8 \
-    ttcc \
-    xmlLayout.1 \
-    xmlLayout.2 \
-    xmlLayout.3 \
-    xmlLayout.mdc.1 \
-    xmlLayout.mdc.2 \
-    xmlLayout.null
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/witness/encoding/Makefile.am b/src/test/resources/witness/encoding/Makefile.am
deleted file mode 100644
index cd909f2..0000000
--- a/src/test/resources/witness/encoding/Makefile.am
+++ /dev/null
@@ -1,31 +0,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.
-#
-EXTRA_DIST = \
-    ascii.log \
-    latin1.log \
-    UTF-16BE.log \
-    UTF-16LE.log \
-    UTF-16.log \
-    UTF-8.log
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/witness/ndc/Makefile.am b/src/test/resources/witness/ndc/Makefile.am
deleted file mode 100644
index ffd9944..0000000
--- a/src/test/resources/witness/ndc/Makefile.am
+++ /dev/null
@@ -1,26 +0,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.
-#
-EXTRA_DIST = \
-    NDC.1
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi
diff --git a/src/test/resources/witness/rolling/Makefile.am b/src/test/resources/witness/rolling/Makefile.am
deleted file mode 100644
index c51948d..0000000
--- a/src/test/resources/witness/rolling/Makefile.am
+++ /dev/null
@@ -1,50 +0,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.
-#
-EXTRA_DIST = \
-    sbr-test2.0 \
-    sbr-test2.1 \
-    sbr-test2.log \
-    sbr-test3.0.gz \
-    sbr-test3.1.gz \
-    sbr-test3.log \
-    sbr-test4.log \
-    tbr-test1.0 \
-    tbr-test1.1 \
-    tbr-test1.2 \
-    tbr-test1.3 \
-    tbr-test2.0 \
-    tbr-test2.1 \
-    tbr-test2.2 \
-    tbr-test2.3 \
-    tbr-test3.3 \
-    tbr-test4.0 \
-    tbr-test4.1 \
-    tbr-test4.2 \
-    tbr-test4.3 \
-    tbr-test5.0 \
-    tbr-test5.1 \
-    tbr-test5.2 \
-    tbr-test5.3 \
-    tbr-test6.3
-
-# if we are building in a separate build tree, then prepare all necessary links
-all-local:
-	@if test "$(top_srcdir)" != "$(top_builddir)"; then \
-	  echo "Symlinking test suite data files ..." ; \
-	  for file in $(EXTRA_DIST); do \
-	    test -a "$$file" || $(LN_S) "$(srcdir)/$$file"; \
-	  done \
-	fi