diff --git a/content/dormant.html b/content/dormant.html
index 5ba890d..1a43a9e 100644
--- a/content/dormant.html
+++ b/content/dormant.html
@@ -79,10 +79,7 @@
 <div class="container">
     <div class="content">
         <h3>Dormant Projects</h3>
-<p>These are Logging Services Projects that have been deemed inactive since they have seen little recent<br />
-development activity or have reached end-of-life. If you wish to use any of these components, you must<br />
-build them yourselves. It is best to assume that these components will not be released in the near<br />
-future.</p>
+<p>These are Logging Services Projects that have been deemed inactive since they have seen little recent development activity or have reached end-of-life. If you wish to use any of these components, you must build them yourselves. It is best to assume that these components will not be released in the near future.</p>
 <div class="row">
         <div class="span4">
                 <h2>Apache Log4j 1.x</h2>
diff --git a/content/mailing-lists.html b/content/mailing-lists.html
index c706022..ceb9811 100644
--- a/content/mailing-lists.html
+++ b/content/mailing-lists.html
@@ -80,11 +80,9 @@
     <div class="content">
         <h1>Mailing lists</h1>
 <p>These are the mailing lists that have been established for the Apache Logging Services project.</p>
-<p>For questions regarding individual logging projects, please find use the mailing lists defined<br />
-on the project site.</p>
-<h3><a href="&#109;a&#105;&#x6c;&#x74;&#x6f;&#x3a;&#103;&#x65;&#x6e;e&#114;&#x61;&#108;@&#108;&#111;&#103;g&#105;n&#x67;&#46;&#x61;&#x70;&#97;&#99;h&#x65;&#x2e;o&#114;&#x67;">&#x67;&#101;&#110;&#101;&#114;&#97;&#x6c;&#x40;&#108;&#111;&#103;&#103;&#x69;&#110;&#103;&#46;&#x61;&#112;&#97;&#x63;&#104;&#x65;&#x2e;&#x6f;&#x72;&#103;</a></h3>
-<p>General and public discussion related to the Logging project and it's children. Anyone may<br />
-subscribe; only subscribers may post.</p>
+<p>For questions regarding individual logging projects, please find use the mailing lists defined on the project site.</p>
+<h3>general@logging.apache.org</h3>
+<p>General and public discussion related to the Logging project and it's children. Anyone may subscribe; only subscribers may post.</p>
 <ul>
 <li><a href="mailto:%67%65%6E%65%72%61%6C%40%6C%6F%67%67%69%6E%67%2E%61%70%61%63%68%65%2E%6F%72%67">Post to list</a></li>
 <li><a href="mailto:%67%65%6E%65%72%61%6C%2D%73%75%62%73%63%72%69%62%65%40%6C%6F%67%67%69%6E%67%2E%61%70%61%63%68%65%2E%6F%72%67">Subscribe to list</a></li>
@@ -95,9 +93,8 @@
 <li><a href="http://mail-archives.apache.org/mod_mbox/logging-general/">Apache archive</a></li>
 <li><a href="http://markmail.org/search/?q=list%3Aorg.apache.logging.general">Markmail archive</a></li>
 </ul>
-<h3><a href="&#x6d;&#97;&#105;l&#116;&#x6f;&#x3a;d&#x65;&#118;&#64;&#108;&#x6f;&#103;g&#x69;&#110;&#103;&#x2e;&#97;&#x70;&#97;&#99;&#104;&#x65;&#x2e;&#x6f;&#114;&#103;">&#100;&#x65;&#x76;&#64;&#108;o&#x67;g&#105;&#110;g&#x2e;&#x61;&#x70;&#97;&#99;h&#101;&#46;&#x6f;r&#103;</a></h3>
-<p>All logging projects share a common mailing list where development of each project is discussed.<br />
-Please use subject tags like [log4j] when starting a new thread.</p>
+<h3>dev@logging.apache.org</h3>
+<p>All logging projects share a common mailing list where development of each project is discussed. Please use subject tags like [log4j] when starting a new thread.</p>
 <ul>
 <li><a href="mailto:%64%65%76%2D%73%75%62%73%63%72%69%62%65%40%6C%6F%67%67%69%6E%67%2E%61%70%61%63%68%65%2E%6F%72%67">Subscribe to list</a></li>
 <li><a href="mailto:%64%65%76%2D%75%6E%73%75%62%73%63%72%69%62%65%40%6C%6F%67%67%69%6E%67%2E%61%70%61%63%68%65%2E%6F%72%67">Unsubscribe from list</a></li>
@@ -108,10 +105,8 @@
 <li><a href="http://mail-archives.apache.org/mod_mbox/logging-dev/">Apache archive</a></li>
 <li><a href="http://markmail.org/search/?q=list%3Aorg.apache.logging.dev">Markmail archive</a></li>
 </ul>
-<h3><a href="&#109;&#97;&#x69;&#108;t&#111;:co&#109;&#x6d;&#x69;&#x74;s&#x40;lo&#103;&#103;&#105;&#110;g&#46;&#97;&#112;&#x61;&#x63;&#x68;&#x65;&#46;&#111;r&#x67;">&#99;o&#x6d;&#x6d;i&#116;&#115;&#64;l&#111;&#x67;g&#x69;&#x6e;g.a&#x70;&#x61;&#99;h&#101;&#x2e;&#111;&#114;&#x67;</a></h3>
-<p>When changes are made to the source code repository, the commit messages are automatically sent to<br />
-this list. Anyone may subscribe; posting is not allowed. The Reply-To is set to the<br />
-logging-general list, so if you reply to a message that's where your reply is going to end up.</p>
+<h3>commits@logging.apache.org</h3>
+<p>When changes are made to the source code repository, the commit messages are automatically sent to this list. Anyone may subscribe; posting is not allowed. The Reply-To is set to the logging-general list, so if you reply to a message that's where your reply is going to end up.</p>
 <ul>
 <li><a href="mailto:%63%6F%6D%6D%69%74%73%2D%73%75%62%73%63%72%69%62%65%40%6C%6F%67%67%69%6E%67%2E%61%70%61%63%68%65%2E%6F%72%67">Subscribe to list</a></li>
 <li><a href="mailto:%63%6F%6D%6D%69%74%73%2D%75%6E%73%75%62%73%63%72%69%62%65%40%6C%6F%67%67%69%6E%67%2E%61%70%61%63%68%65%2E%6F%72%67">Unsubscribe from list</a></li>
@@ -121,10 +116,8 @@
 <li><a href="http://mail-archives.apache.org/mod_mbox/logging-commits/">Apache archive</a></li>
 <li><a href="http://markmail.org/search/?q=list%3Aorg.apache.logging.commits">Markmail archive</a></li>
 </ul>
-<h3><a href="m&#97;&#105;&#x6c;&#x74;o&#58;&#x70;&#114;&#x69;v&#97;te&#64;&#x6c;&#x6f;g&#x67;&#x69;&#110;&#x67;.&#97;p&#x61;&#99;he&#46;o&#x72;&#103;">p&#x72;&#105;&#x76;&#97;te@l&#x6f;&#103;&#103;i&#110;g&#46;&#97;&#x70;&#97;&#99;&#x68;&#x65;&#x2e;&#111;&#114;&#103;</a></h3>
-<p>Private list for the project management committee. It is not open to public subscription. This list should be used<br />
-only for the discussion of confidential topics. As much business as possible should be conducted in public on<br />
-the general list.</p>
+<h3>private@logging.apache.org</h3>
+<p>Private list for the project management committee. It is not open to public subscription. This list should be used only for the discussion of confidential topics. As much business as possible should be conducted in public on the general list.</p>
 <ul>
 <li><a href="mailto:%70%72%69%76%61%74%65%40%6C%6F%67%67%69%6E%67%2E%61%70%61%63%68%65%2E%6F%72%67">Post to list</a></li>
 </ul>
diff --git a/content/security.html b/content/security.html
index 52d8dc9..e29196e 100644
--- a/content/security.html
+++ b/content/security.html
@@ -79,16 +79,10 @@
 <div class="container">
     <div class="content">
         <h2>Reporting New Security Problems with Apache Logging Projects</h2></h2>
-<p>The Apache Software Foundation takes a very active stance in eliminating security problems and denial<br />
-of service attacks against its products.</p>
-<p>We strongly encourage folks to report such problems to our private security mailing list first,<br />
-before disclosing them in a public forum.</p>
-<p>Please note that the security mailing list should only be used for reporting undisclosed security<br />
-vulnerabilities and managing the process of fixing such vulnerabilities. We cannot accept regular<br />
-bug reports or other queries at this address. All mail sent to this address that does not relate<br />
-to an undisclosed security problem in our source code will be ignored.</p>
-<p>If you need to report a bug that isn't an undisclosed security vulnerability, please use the<br />
-project's issue tracker.</p>
+<p>The Apache Software Foundation takes a very active stance in eliminating security problems and denial of service attacks against its products.</p>
+<p>We strongly encourage folks to report such problems to our private security mailing list first, before disclosing them in a public forum.</p>
+<p>Please note that the security mailing list should only be used for reporting undisclosed security vulnerabilities and managing the process of fixing such vulnerabilities. We cannot accept regular bug reports or other queries at this address. All mail sent to this address that does not relate to an undisclosed security problem in our source code will be ignored.</p>
+<p>If you need to report a bug that isn't an undisclosed security vulnerability, please use the project's issue tracker.</p>
 <p>The private security mailing address is: <a href="mailto:%73%65%63%75%72%69%74%79%40%61%70%61%63%68%65%2E%6F%72%67">security@apache.org</a></p>
 <h2>Asking Questions About Known Security Problems</h2>
 <p>Questions about:</p>
@@ -97,14 +91,10 @@
 <li>obtaining further information on a published vulnerability</li>
 <li>availability of patches and/or new releases</li>
 </ol>
-<p>should be addressed to the users mailing list. Please see the <a href="/mailing-lists.html">mailing lists page</a><br />
-for details of how to subscribe.</p>
+<p>should be addressed to the users mailing list. Please see the <a href="/mailing-lists.html">mailing lists page</a> for details of how to subscribe.</p>
 <h2>Known Security Vulnerabilities</h2>
-<p>Known security vulnerabilities fixed in released versions of Apache Logging projects are listed in<br />
-specific pages for each project.</p>
-<p>If you have encountered an unlisted security vulnerability or other unexpected behaviour that has<br />
-security impact, or if the descriptions in one of the pages are incomplete, please report them<br />
-privately to the Apache Security Team. Thank you.</p>
+<p>Known security vulnerabilities fixed in released versions of Apache Logging projects are listed in specific pages for each project.</p>
+<p>If you have encountered an unlisted security vulnerability or other unexpected behaviour that has security impact, or if the descriptions in one of the pages are incomplete, please report them privately to the Apache Security Team. Thank you.</p>
 <p>Errors and Ommissions</p>
 <p>Please report any errors or omissions to <a href="/mailing-lists.html">the dev mailing list</a> .</p>
 
diff --git a/content/what-is-logging.html b/content/what-is-logging.html
index 4924bed..26afe98 100644
--- a/content/what-is-logging.html
+++ b/content/what-is-logging.html
@@ -78,213 +78,108 @@
 
 <div class="container">
     <div class="content">
-        <h1>What is logging?</h1>
-<p>At a high level, logging is used to capture information during the run of an<br />
-application.  This can include different types of information about both the<br />
-state of the application and inputs to the application.  For example, an HTTP<br />
-server may log information about incoming connections(such as an IP address).<br />
-Logging can also be at different levels of verbosity, in order to allow a user<br />
-of the application to not be overwhelmed with too much information.</p>
-<p>Logging can be broadly classified into two categories.  The two main categories<br />
-of logging are debug logging and audit logging.  Debug logging is generally<br />
-useful for application developers who can turn on messages that an end-user<br />
-does not care about - for example, if data is being parsed correctly, or if an<br />
-exception is thrown.  Audit logging is more interesting to system<br />
-administrators.  This type of data would include information such as when<br />
-somebody logged in, who changed a piece of information, etc.  Debug logging and<br />
-audit logging are not mutually exclusive, and there can be plenty of overlap<br />
-between these two categories.</p>
+        <ul>
+<li><a href="#what-is-logging">What is logging?</a></li>
+<li><a href="#what-should-a-logging-framework-do">What should a logging framework do?</a></li>
+<li><a href="#log-levels-and-subsystem-classification">Log Levels and Subsystem Classification</a></li>
+<li><a href="#where-to-put-logs">Where to put logs?</a></li>
+<li><a href="#transparent-logging">Transparent Logging</a></li>
+<li><a href="#how-to-do-proper-logging">How to do proper logging</a></li>
+<li><a href="#other-things-to-worry-about-when-logging">Other things to worry about when logging</a></li>
+<li><a href="#features-that-the-apache-logging-services-projects-have">Features that the Apache Logging Services projects have</a>
+<ul>
+<li><a href="#hierarchichal-logging">Hierarchichal Logging</a></li>
+<li><a href="#location-information">Location Information</a></li>
+<li><a href="#static-and-single-instance-loggers">Static and Single-instance Loggers</a></li>
+<li><a href="#nested-and-mapped-diagnostic-contexts">Nested and Mapped Diagnostic Contexts</a></li>
+<li><a href="#flexible-log-message-formatting">Flexible Log Message Formatting</a></li>
+<li><a href="#configuration-via-config-file">Configuration via config file</a></li>
+<li><a href="#garbage-freelog4j2">Garbage-free(Log4j2)</a></li>
+<li><a href="#formatting-with-replacements">Formatting with replacements</a></li>
+<li><a href="#filtering">Filtering</a></li>
+</ul>
+</li>
+<li><a href="#conclusion">Conclusion</a></li>
+</ul>
+<h1>What is logging?</h1>
+<p>At a high level, logging is used to capture information during the run of an application.  This can include different types of information about both the state of the application and inputs to the application.  For example, an HTTP server may log information about incoming connections(such as an IP address).<br />
+Logging can also be at different levels of verbosity, in order to allow a user of the application to not be overwhelmed with too much information.</p>
+<p>Logging can be broadly classified into two categories.  The two main categories of logging are debug logging and audit logging.  Debug logging is generally useful for application developers who can turn on messages that an end-user does not care about - for example, if data is being parsed correctly, or if an exception is thrown.  Audit logging is more interesting to system administrators.  This type of data would include information such as when somebody logged in, who changed a piece of information, etc.  Debug logging and audit logging are not mutually exclusive, and there can be plenty of overlap between these two categories.</p>
 <h1>What should a logging framework do?</h1>
 <p>At a minimum, a logging framework needs to be able to do the following:</p>
 <ul>
 <li>Easily allow you to create log messages</li>
 <li>Send log messages to stdout and/or stderr</li>
-<li>Be completely transparent to your application - your application should<br />
-behave exactly the same no matter if logging is enabled or disabled</li>
+<li>Be completely transparent to your application - your application should behave exactly the same no matter if logging is enabled or disabled</li>
 </ul>
-<p>However, a logging framework that does only these things is not particularly<br />
-useful, and no better than using System.out.println() or printf().  Common<br />
-features of logging frameworks generally include:</p>
+<p>However, a logging framework that does only these things is not particularly useful, and no better than using <code>System.out.println()</code> or <code>printf()</code>.  Common features of logging frameworks generally include:</p>
 <ul>
-<li>Ability to send log messages to other places than just stdout/stderr.  For<br />
-example, common places to send logs could be:<br />
-** syslog<br />
-** A file on the local filesystem<br />
-** Remote log server(e.g. ELK, Splunk, kibana, etc.)<br />
-** Windows event log<br />
-** Database</li>
+<li>Ability to send log messages to other places than just stdout/stderr.  For example, common places to send logs could be:</li>
+</ul>
+<ol>
+<li>syslog</li>
+<li>A file on the local filesystem</li>
+<li>Remote log server(e.g. ELK, Splunk, kibana, etc.)</li>
+<li>Windows event log</li>
+<li>Database</li>
+</ol>
+<ul>
 <li>Filtering based off of levels and data</li>
 <li>Location information of where the log statement is in the code</li>
-<li>Allow for rotation of files when logging to a file.  This allows you to do<br />
-things such as creating a new log whenever you start up, doing one log file per<br />
-day, limiting files to a specific size, etc.</li>
-<li>Log to multiple locations at once(send the same data to stdout and a file for<br />
-example)</li>
+<li>Allow for rotation of files when logging to a file.  This allows you to do things such as creating a new log whenever you start up, doing one log file per day, limiting files to a specific size, etc.</li>
+<li>Log to multiple locations at once(send the same data to stdout and a file for example)</li>
 <li>Classify messages based off of the particular subsystem that they are from</li>
 <li>Format log messages according to some user-defined pattern</li>
 </ul>
-<p>This is not an exhaustive list of all features that could exist.  There are<br />
-many different logging frameworks that exist which may implement different<br />
-subsets of these features, and may also have more features than are listed here.</p>
+<p>This is not an exhaustive list of all features that could exist.  There are many different logging frameworks that exist which may implement different subsets of these features, and may also have more features than are listed here.</p>
 <h1>Log Levels and Subsystem Classification</h1>
-<p>When you are logging information, two of the most important things to know are<br />
-the level of the log message and the subsystem that the log message is from.<br />
-This allows you to determine how severe something is, as well as where it is<br />
-coming from.</p>
-<p>The traditional log levels are as follows(from most verbose to least verbose):<br />
-TRACE<br />
-DEBUG<br />
-INFO<br />
-WARN<br />
-ERROR</p>
-<p>In addition, levels of CRITICAL and FATAL may exist as well.  Generally, FATAL<br />
-indicates that the application is about to exit, while CRITICAL is similar to<br />
-ERROR.</p>
-<p>Levels make it easy to quickly filter messages.  Since more verbose messages<br />
-still allow less verbose messages to be printed, you don't lose information by<br />
-turning the verbosity up.  When you are working on a particular subsystem, you<br />
-may want that subsystem to be at the DEBUG level to see all the messages, or<br />
-TRACE if there is something that you really need to see.  As a general rule of<br />
-thumb, when your application is in production the default level of all loggers<br />
-should be at the INFO level.</p>
-<p>Subsystems help to classify the data as well.  In Java, this is generally done<br />
-by the package that a class is in.  Being able to set a particular subsystem<br />
-that you are debugging to the DEBUG level(and not just a single class) is an<br />
-important part of being able to easily filter information and to not overload<br />
-the programmer who is debugging the application.</p>
-<p>Within the Apache Logging Services projects(log4j2, log4cxx, and log4net) this<br />
-subsystem classification follows the Java hierarchical approach.  If you have a<br />
-logger org.apache.Foo and org.apache.Bar, you can set the level of org.apache<br />
-to DEBUG and both loggers will be at the DEBUG level, but can also be<br />
-individually set if required.  This hierarchical way of logging is not a<br />
-feature that all logging frameworks have, however it is very useful if your<br />
-code is organized in a way such that all classes have individual loggers and<br />
-are logically separated into subsystems appropriately.  This also allows for<br />
-more granular control over your debug statements.</p>
+<p>When you are logging information, two of the most important things to know are the level of the log message and the subsystem that the log message is from.<br />
+This allows you to determine how severe something is, as well as where it is coming from.</p>
+<p>The traditional log levels are as follows(from most verbose to least verbose): TRACE DEBUG INFO WARN ERROR</p>
+<p>In addition, levels of CRITICAL and FATAL may exist as well.  Generally, FATAL indicates that the application is about to exit, while CRITICAL is similar to ERROR.</p>
+<p>Levels make it easy to quickly filter messages.  Since more verbose messages still allow less verbose messages to be printed, you don't lose information by turning the verbosity up.  When you are working on a particular subsystem, you may want that subsystem to be at the DEBUG level to see all the messages, or TRACE if there is something that you really need to see.  As a general rule of thumb, when your application is in production the default level of all loggers should be at the INFO level.</p>
+<p>Subsystems help to classify the data as well.  In Java, this is generally done by the package that a class is in.  Being able to set a particular subsystem that you are debugging to the DEBUG level(and not just a single class) is an important part of being able to easily filter information and to not overload the programmer who is debugging the application.</p>
+<p>Within the Apache Logging Services projects(log4j2, log4cxx, and log4net) this subsystem classification follows the Java hierarchical approach.  If you have a logger org.apache.Foo and org.apache.Bar, you can set the level of org.apache to DEBUG and both loggers will be at the DEBUG level, but can also be individually set if required.  This hierarchical way of logging is not a feature that all logging frameworks have, however it is very useful if your code is organized in a way such that all classes have individual loggers and are logically separated into subsystems appropriately.  This also allows for more granular control over your debug statements.</p>
 <h1>Where to put logs?</h1>
-<p>Logging to different locations(sometimes called sinks) is an important part of<br />
-logging frameworks.  For simple applications, you may not need to do anything<br />
-more complicated than just send data to stdout and/or a file.  However, more<br />
-complicated applications quickly need to have more flexibility in how and where<br />
-they log information.  Modern applications can log to web-based log aggregators<br />
-in addition to a local log mechanism such as syslog.</p>
-<p>By configuring these log locations through an external source such as a config<br />
-file, it also makes it possible for the end-user to configure the system for<br />
-their particular use-case.</p>
+<p>Logging to different locations(sometimes called sinks) is an important part of logging frameworks.  For simple applications, you may not need to do anything more complicated than just send data to stdout and/or a file.  However, more complicated applications quickly need to have more flexibility in how and where they log information.  Modern applications can log to web-based log aggregators in addition to a local log mechanism such as syslog.</p>
+<p>By configuring these log locations through an external source such as a config file, it also makes it possible for the end-user to configure the system for their particular use-case.</p>
 <h1>Transparent Logging</h1>
-<p>One of the most basic tenets of logging is that it needs to be completely<br />
-transparent to your application.  Your application must not care if logging is<br />
-enabled or disabled: all it does is send messages to the logging framework,<br />
-which then handles all of the filtering and routing required to get the message<br />
-to its final destination.  This also makes it possible to write unit tests that<br />
-don't care about logging at all.  If the logging system is not initialized, the<br />
-worst that should happen is that nothing gets logged.</p>
+<p>One of the most basic tenets of logging is that it needs to be completely transparent to your application.  Your application must not care if logging is enabled or disabled: all it does is send messages to the logging framework, which then handles all of the filtering and routing required to get the message to its final destination.  This also makes it possible to write unit tests that don't care about logging at all.  If the logging system is not initialized, the worst that should happen is that nothing gets logged.</p>
 <h1>How to do proper logging</h1>
-<p>Now that we understand what the normal features of logging libraries are,<br />
-it’s time to talk about how to do proper logging.  As we’ve mentioned<br />
-before, the two main things to worry about when logging are what the level of<br />
-the message is, and the classification of the log message.  For the<br />
-classification of the log message, this will often be the name of the class<br />
-that is doing the logging.  Assuming that you have a good design already, then<br />
-the classification derives clearly from the name of the class and the<br />
-package/namespace the class is in.</p>
-<p>Choosing the level of the log message can be a bit trickier.  A good rule of<br />
-thumb is to leave your log messages at INFO level during normal operation, so<br />
-what should we put at that level and what should be more verbose?  Let’s<br />
-assume that we are opening a network socket for remote communications.  At the<br />
-INFO level we may inform that the network subsystem is starting up and ready<br />
-for work.  DEBUG information could include new connections from clients with<br />
-their IP/port combination, while TRACE information could be output whenever a<br />
-packet comes in from a client.  In addition, we may have ERROR messages if we<br />
-are unable to open a socket for reading/writing.</p>
-<p>By having different pieces of the data flow at different log levels, it makes<br />
-it easy to quickly look at the logs and determine how serious a problem is and<br />
-what the system is doing during operation.</p>
+<p>Now that we understand what the normal features of logging libraries are, it’s time to talk about how to do proper logging.  As we’ve mentioned before, the two main things to worry about when logging are what the level of the message is, and the classification of the log message.  For the classification of the log message, this will often be the name of the class that is doing the logging.  Assuming that you have a good design already, then the classification derives clearly from the name of the class and the package/namespace the class is in.</p>
+<p>Choosing the level of the log message can be a bit trickier.  A good rule of thumb is to leave your log messages at INFO level during normal operation, so what should we put at that level and what should be more verbose?  Let’s assume that we are opening a network socket for remote communications.  At the INFO level we may inform that the network subsystem is starting up and ready for work.  DEBUG information could include new connections from clients with their IP/port combination, while TRACE information could be output whenever a packet comes in from a client.  In addition, we may have ERROR messages if we are unable to open a socket for reading/writing.</p>
+<p>By having different pieces of the data flow at different log levels, it makes it easy to quickly look at the logs and determine how serious a problem is and what the system is doing during operation.</p>
 <h1>Other things to worry about when logging</h1>
-<p>As we have seen, having a good logging framework is critical to being able to<br />
-find and fix errors in applications.  However, just because we have logging<br />
-doesn’t mean that it is infallible.  Since logging code that you insert into<br />
-your application is still code that you have written, it is always possible<br />
-that the log messages you get out are lying to you due to a bug in a log<br />
-statement.</p>
+<p>As we have seen, having a good logging framework is critical to being able to find and fix errors in applications.  However, just because we have logging doesn’t mean that it is infallible.  Since logging code that you insert into your application is still code that you have written, it is always possible that the log messages you get out are lying to you due to a bug in a log statement.</p>
 <h1>Features that the Apache Logging Services projects have</h1>
-<p>While there are many different logging frameworks that exist for Java, C++, and<br />
-.NET, there are a number of built-in features that Log4j2, Log4cxx, and Log4net<br />
-have that are generally useful.</p>
+<p>While there are many different logging frameworks that exist for Java, C++, and .NET, there are a number of built-in features that Log4j2, Log4cxx, and Log4net have that are generally useful.</p>
 <h2>Hierarchichal Logging</h2>
-<p>As mentioned previously, hierarchical logging allows for easy grouping of<br />
-subsystem information.  This allows you to have fine-grained control over the<br />
-information that you are logging and easily allows for one logger per-class.</p>
-<p>This hierarchical logging also means that you don't need to explicitly share<br />
-a sink between loggers.  While it is possible to configure Log4j2 and Log4cxx<br />
-to send each logger to a separate location, the parent/child relationship means<br />
-that children will log their messages to any sinks that their parents have.</p>
+<p>As mentioned previously, hierarchical logging allows for easy grouping of subsystem information.  This allows you to have fine-grained control over the information that you are logging and easily allows for one logger per-class.</p>
+<p>This hierarchical logging also means that you don't need to explicitly share a sink between loggers.  While it is possible to configure Log4j2 and Log4cxx to send each logger to a separate location, the parent/child relationship means that children will log their messages to any sinks that their parents have.</p>
 <h2>Location Information</h2>
-<p>Knowing exactly where a log statement is can be vital in order to track down<br />
-the location of a log statement.  Both Log4j2 and Log4cxx are able to determine<br />
-the filename, class name, method name, and line number where the log message<br />
-is coming from.  With Log4cxx, this is able to be done at compile-time.</p>
+<p>Knowing exactly where a log statement is can be vital in order to track down the location of a log statement.  Both Log4j2 and Log4cxx are able to determine the filename, class name, method name, and line number where the log message is coming from.  With Log4cxx, this is able to be done at compile-time.</p>
 <h2>Static and Single-instance Loggers</h2>
-<p>All loggers that are created with Log4j2 and Log4cxx are able to be declared<br />
-as static variables in your source file, eliminating the need for a dedicated<br />
-instance variable of a logger per-class.  A side effect of this is that there<br />
-is a global logger registry, so that you can access the same logger via a<br />
-static LogManager in different classes without having to pass the logger around.</p>
+<p>All loggers that are created with Log4j2 and Log4cxx are able to be declared as static variables in your source file, eliminating the need for a dedicated instance variable of a logger per-class.  A side effect of this is that there is a global logger registry, so that you can access the same logger via a static LogManager in different classes without having to pass the logger around.</p>
 <h2>Nested and Mapped Diagnostic Contexts</h2>
-<p>When you have multiple objects of the same type, using a static logger can be<br />
-problematic when you need to only view data for one instance of the class.  By<br />
-providing a Nested Diagnostic Context and a Mapped Diagnostic Context, it is<br />
-possible to add context information to your log statements.</p>
+<p>When you have multiple objects of the same type, using a static logger can be problematic when you need to only view data for one instance of the class.  By providing a Nested Diagnostic Context and a Mapped Diagnostic Context, it is possible to add context information to your log statements.</p>
 <h2>Flexible Log Message Formatting</h2>
-<p>When sending a log message to a flat text file, it is often desirable to have<br />
-the messages in a simple to understand format.  This information can include<br />
-data such as the date/time of the log message, the level of the message, the<br />
-logger that produced the message, and the message itself.  With the Log4j2<br />
-and Log4cxx PatternLayout classes, it is possible to quickly configure the<br />
-logging system to output information in a convenient format.</p>
-<p>Different types of log message formatting is also important when you need<br />
-to send messages to different locations.  The code that creates the log messages<br />
-should not know anything about how the message is formatted on the backend.<br />
-This allows for the same log message to be formatted in different ways with<br />
-potentially different metadata - for example, JSON format for a log aggregating<br />
-service, or plain text for a local configuration file.</p>
+<p>When sending a log message to a flat text file, it is often desirable to have the messages in a simple to understand format.  This information can include data such as the date/time of the log message, the level of the message, the logger that produced the message, and the message itself.  With the Log4j2 and Log4cxx PatternLayout classes, it is possible to quickly configure the logging system to output information in a convenient format.</p>
+<p>Different types of log message formatting is also important when you need to send messages to different locations.  The code that creates the log messages should not know anything about how the message is formatted on the backend. This allows for the same log message to be formatted in different ways with potentially different metadata - for example, JSON format for a log aggregating service, or plain text for a local configuration file.</p>
 <h2>Configuration via config file</h2>
-<p>Both Log4j2 and Log4cxx can be configured with a configuration file in one of<br />
-several different formats.  While it is always possible to configure via code,<br />
-configuration files make it easy to reconfigure the system without having to<br />
-recompile your code.  This also means it is possible to edit a configuration<br />
-file and dynamically change the configuration at runtime.  For example, you<br />
-can turn on a logger that was previously off if you are debugging a live<br />
-system.</p>
+<p>Both Log4j2 and Log4cxx can be configured with a configuration file in one of several different formats.  While it is always possible to configure via code, configuration files make it easy to reconfigure the system without having to recompile your code.  This also means it is possible to edit a configuration file and dynamically change the configuration at runtime.  For example, you can turn on a logger that was previously off if you are debugging a live system.</p>
 <h2>Garbage-free(Log4j2)</h2>
-<p>In Java, it is important to reduce the amount of time that the garbage<br />
-collector takes to run.  By not allocating and freeing objects, your<br />
-log statements will add very little to the runtime overhead of your application.</p>
+<p>In Java, it is important to reduce the amount of time that the garbage collector takes to run.  By not allocating and freeing objects, your log statements will add very little to the runtime overhead of your application.</p>
 <h2>Formatting with replacements</h2>
-<p>When creating a log statement, it is often slow and annoying to perform string<br />
-concatenation to create a log statement.  In Java, the simplest way to<br />
-concatenate a string is to simply use the + operator:</p>
-<pre><code>log(&quot;Logging information: &quot; + someVariable + &quot; and the other variable is &quot; + otherVariable);
-</code></pre>
+<p>When creating a log statement, it is often slow and annoying to perform string concatenation to create a log statement.  In Java, the simplest way to concatenate a string is to simply use the + operator:</p>
+<p><code>log(&quot;Logging information: &quot; + someVariable + &quot; and the other variable is &quot; + otherVariable);</code></p>
 <p>While in C++, you can get into a chevron overload:</p>
-<pre><code>log(&quot;Logging information: &quot; &lt;&lt; someVariable &lt;&lt; &quot; and the other variable is &quot; &lt;&lt; otherVariable);
-</code></pre>
-<p>Both Log4j2 and Log4cxx allow for variable replacements in strings, such that<br />
-the above log statements can both be written similar to the following:</p>
-<pre><code>log(&quot;Logging information: {} and the other variable is {}&quot;, someVariable, otherVariable);
-</code></pre>
+<p><code>log(&quot;Logging information: &quot; &lt;&lt; someVariable &lt;&lt; &quot; and the other variable is &quot; &lt;&lt; otherVariable);</code></p>
+<p>Both Log4j2 and Log4cxx allow for variable replacements in strings, such that the above log statements can both be written similar to the following:</p>
+<p><code>log(&quot;Logging information: {} and the other variable is {}&quot;, someVariable, otherVariable);</code></p>
 <h2>Filtering</h2>
-<p>When you have many different log messages that you are trying to make sense of,<br />
-it can be difficult to focus on the correct piece of information.  Because of<br />
-this, it is possible to configure both Log4j2 and Log4cxx to filter certain<br />
-messages based off of various attributes, such as a text string that is contained<br />
-within the log message.  Since these filters are also able to be configured<br />
-through the confgiuration file, adding or removing filters is a simple operation.</p>
+<p>When you have many different log messages that you are trying to make sense of, it can be difficult to focus on the correct piece of information.  Because of this, it is possible to configure both Log4j2 and Log4cxx to filter certain messages based off of various attributes, such as a text string that is contained within the log message.  Since these filters are also able to be configured through the confgiuration file, adding or removing filters is a simple operation.</p>
 <h1>Conclusion</h1>
-<p>Logging is a rather complicated topic that covers many different aspects.  While<br />
-different applications will have different requirements for their log statements,<br />
-the projects of the Apache Logging Services Commitee provide a generic and<br />
-widely applicable implemenation of logging for all kinds of applications.</p>
+<p>Logging is a rather complicated topic that covers many different aspects.  While different applications will have different requirements for their log statements, the projects of the Apache Logging Services Commitee provide a generic and widely applicable implemenation of logging for all kinds of applications.</p>
 
     </div>
 
diff --git a/sources/src/main/jbake/content/what-is-logging.md b/sources/src/main/jbake/content/what-is-logging.md
index 994b80a..1149f06 100644
--- a/sources/src/main/jbake/content/what-is-logging.md
+++ b/sources/src/main/jbake/content/what-is-logging.md
@@ -3,6 +3,8 @@
 type=page
 ~~~~~~
 
+[TOC bullet hierarchy levels=1-3]
+
 # What is logging?
 At a high level, logging is used to capture information during the run of an
 application.  This can include different types of information about both the
@@ -30,16 +32,16 @@
 behave exactly the same no matter if logging is enabled or disabled
 
 However, a logging framework that does only these things is not particularly 
-useful, and no better than using System.out.println() or printf().  Common 
+useful, and no better than using `System.out.println()` or `printf()`.  Common 
 features of logging frameworks generally include:
 
 * Ability to send log messages to other places than just stdout/stderr.  For 
 example, common places to send logs could be:
-** syslog
-** A file on the local filesystem
-** Remote log server(e.g. ELK, Splunk, kibana, etc.)
-** Windows event log
-** Database
+   1. syslog
+   2. A file on the local filesystem
+   3. Remote log server(e.g. ELK, Splunk, kibana, etc.)
+   4. Windows event log
+   5. Database
 * Filtering based off of levels and data
 * Location information of where the log statement is in the code
 * Allow for rotation of files when logging to a file.  This allows you to do 
diff --git a/sources/src/main/jbake/custom.properties b/sources/src/main/jbake/custom.properties
index 1ca24e5..0cb72e6 100644
--- a/sources/src/main/jbake/custom.properties
+++ b/sources/src/main/jbake/custom.properties
@@ -9,3 +9,5 @@
 
 destination.folder=../content
 
+markdown.extensions=TOC
+
