diff --git a/Jenkinsfile b/Jenkinsfile
index a70be5b..8862721 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,19 +1,19 @@
 #!groovy
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
+ * 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 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
+ * the License. You may obtain a copy of the License at
  *
- *     https://www.apache.org/licenses/LICENSE-2.0
+ *      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 license for the specific language governing permissions and
+ * limitations under the license.
  */
 
 // =================================================================
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 8e8cf4c..417a855 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -14,9 +14,9 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-# Apache Log4j 2.13.1 Release Notes
+# Apache Log4j 2.13.2 Release Notes
 
-The Apache Log4j 2 team is pleased to announce the Log4j 2.13.1 release!
+The Apache Log4j 2 team is pleased to announce the Log4j 2.13.2 release!
 
 Apache Log4j is a well known framework for logging application behavior. Log4j 2 is an upgrade
 to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides
@@ -27,106 +27,80 @@
 
 The artifacts may be downloaded from https://logging.apache.org/log4j/2.x/download.html.
 
-This release contains bugfixes and very minor enhancements.
+This release contains bugfixes and minor enhancements.
 
 Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
 log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with SLF4J 1.8.x and
 later.
 
-Note that the XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the "timeMillis" attribute
-and instead have an "Instant" element with "epochSecond" and "nanoOfSecond" attributes.
+Note that the default XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the "timeMillis"
+attribute and instead have an "Instant" element with "epochSecond" and "nanoOfSecond" attributes. If the previous
+behavior is desired the "includeTimeMillis" attribute may be set to true on each of the respective Layouts.
 
-The Log4j 2.13.1 API, as well as many core components, maintains binary compatibility with previous releases.
+The Log4j 2.13.2 API, as well as many core components, maintains binary compatibility with previous releases.
 
-## GA Release 2.13.1
+## GA Release 2.13.2
 
 Changes in this version include:
 
 ### New Features
-* [LOG4J2-2748](https://issues.apache.org/jira/browse/LOG4J2-2748):
-Implement ISO8601_PERIOD_MICROS fixed date format matching ISO8601_PERIOD with support for microsecond precision.
+* [LOG4J2-1360](https://issues.apache.org/jira/browse/LOG4J2-1360):
+Provide a Log4j implementation of System.Logger. Thanks to Kevin Leturc.
+* [LOG4J2-2807](https://issues.apache.org/jira/browse/LOG4J2-2807):
+Added EventLookup to retrieve fields from the log event.
 
 ### Fixed Bugs
-* [LOG4J2-2717](https://issues.apache.org/jira/browse/LOG4J2-2717):
-Slow initialization on Windows due to accessing network interfaces.
-* [LOG4J2-2756](https://issues.apache.org/jira/browse/LOG4J2-2756):
-Prevent LoggerContext from being garbage collected while being created.
-* [LOG4J2-2769](https://issues.apache.org/jira/browse/LOG4J2-2769):
-Do not log an error if Files.move does not work.
-* [LOG4J2-2039](https://issues.apache.org/jira/browse/LOG4J2-2039):
-Rollover fails when file matches pattern but index is too large.
-* [LOG4J2-2784](https://issues.apache.org/jira/browse/LOG4J2-2784):
-Counter stuck at 10 and overwriting files when leading zeros used in the file pattern count.
-* [LOG4J2-2746](https://issues.apache.org/jira/browse/LOG4J2-2746):
-ClassLoaderContextSelector was not locating the LoggerContext during shutdown.
-* [LOG4J2-2652](https://issues.apache.org/jira/browse/LOG4J2-2652):
-JSON output wrong when using additonal fields.
-* [LOG4J2-2649](https://issues.apache.org/jira/browse/LOG4J2-2649):
-GraalVM does not allow use of MethodHandles.
-* [LOG4J2-2211](https://issues.apache.org/jira/browse/LOG4J2-2211):
-Allow Lookup keys with leading dashes by using a slash as an escape character.
-* [LOG4J2-2781](https://issues.apache.org/jira/browse/LOG4J2-2781):
-ServletContainerInitializer was obtaining the StatusLogger too soon. Thanks to qxo.
-* [LOG4J2-2676](https://issues.apache.org/jira/browse/LOG4J2-2676):
-PluginProcessor should use Messager instead of System.out. Thanks to Gregg Donovan.
-* [LOG4J2-2703](https://issues.apache.org/jira/browse/LOG4J2-2703):
-MapMessage.getFormattedMesssage() would incorrectly format objects. Thanks to Volkan Yazici.
-* [LOG4J2-2760](https://issues.apache.org/jira/browse/LOG4J2-2760):
-Always write header on a new OutputStream. Thanks to Christoph Kaser.
-* [LOG4J2-2776](https://issues.apache.org/jira/browse/LOG4J2-2776):
-An error message in RollingFileAppender uses a placeholder for the name but does not specify the name
-        argument in the logging call Thanks to Christoph Kaser.
-* [LOG4J2-2758](https://issues.apache.org/jira/browse/LOG4J2-2758):
-NullPointerException when using a custom DirectFileRolloverStrategy without a file name. Thanks to Christoph Kaser.
-* [LOG4J2-2768](https://issues.apache.org/jira/browse/LOG4J2-2768):
-Add mulit-parameter overloads to LogBuilder. Thanks to Marius Volkhart.
-* [LOG4J2-2770](https://issues.apache.org/jira/browse/LOG4J2-2770):
-Fixed NullPointerException after reconfiguring via JMX. Thanks to Bill Kuker.
-* [LOG4J2-2759](https://issues.apache.org/jira/browse/LOG4J2-2759):
-RollingFileAppender was not rolling on startup if createOnDemand was set to true.
-* [LOG4J2-2767](https://issues.apache.org/jira/browse/LOG4J2-2767):
-Warn if pattern is missing on Routes element. Use default route.
-* [LOG4J2-2415](https://issues.apache.org/jira/browse/LOG4J2-2415):
-Fix lock contention in the classloader using new versions of slf4j without EventData on slf4j logger creation. Thanks to Andrey Turbanov.
-* [LOG4J2-2677](https://issues.apache.org/jira/browse/LOG4J2-2677):
-Rollover handles parallel file deletion gracefully.
-* [LOG4J2-2744](https://issues.apache.org/jira/browse/LOG4J2-2744):
-Remove unnecessary EventLogger references from log4j-slf4j18-impl due to removal from slf4j.
-* [LOG4J2-2747](https://issues.apache.org/jira/browse/LOG4J2-2747):
-Fix a memory leak using fully asynchronous logging when the queue is full using the 'discard' asynchronous queue full strategy.
-* [LOG4J2-2739](https://issues.apache.org/jira/browse/LOG4J2-2739):
-Fix erroneous log4j-jul recursive logger detection resulting in some no-op JUL loggers and 'WARN Recursive call to getLogger' being reported by the status logger.
-* [LOG4J2-2735](https://issues.apache.org/jira/browse/LOG4J2-2735):
-PluginCache output is reproducible allowing the annotation processor to produce deterministic results. Thanks to Andy Wilkinson.
-* [LOG4J2-2751](https://issues.apache.org/jira/browse/LOG4J2-2751):
-Fix StackLocator.getCallerClass performance in cases where Reflection.getCallerClass is not accessible.
-* [LOG4J2-2752](https://issues.apache.org/jira/browse/LOG4J2-2752):
-MutableLogEvent and RingBufferLogEvent avoid StringBuffer and parameter array allocation unless reusable messages are used.
-* [LOG4J2-2754](https://issues.apache.org/jira/browse/LOG4J2-2754):
-LoaderUtil.getClassLoaders may discover additional loaders and no longer erroneously returns a result with a null element in some environments.
-* [LOG4J2-2575](https://issues.apache.org/jira/browse/LOG4J2-2575):
-CronExpression.getBeforeTime() would sometimes return incorrect result. Thanks to Nathan Friess.
-* [LOG4J2-2762](https://issues.apache.org/jira/browse/LOG4J2-2762):
-[JDBC] MS-SQL Server JDBC driver throws SQLServerException when inserting a null value for a VARBINARY column.
-* [LOG4J2-2770](https://issues.apache.org/jira/browse/LOG4J2-2770):
-NullPointerException after reconfiguring via JMX. Thanks to Bill Kuker.
+* [LOG4J2-2824](https://issues.apache.org/jira/browse/LOG4J2-2824):
+Implement requiresLocation in GelfLayout to reflect whether location information is used in the message Pattern. Thanks to CrazyBills.
+* [LOG4J2-2588](https://issues.apache.org/jira/browse/LOG4J2-2588):
+Add option to restore printing timeMillis in the JsonLayout.
+* [LOG4J2-2766](https://issues.apache.org/jira/browse/LOG4J2-2766):
+Initialize pattern processor before triggering policy during reconriguration.
+* [LOG4J2-2810](https://issues.apache.org/jira/browse/LOG4J2-2810):
+Add information about using a url in log4j.configurationFile.
+* [LOG4J2-2813](https://issues.apache.org/jira/browse/LOG4J2-2813):
+serializeToBytes was checking wrong variable for null. Thanks to Keith D Gregory.
+* [LOG4J2-2814](https://issues.apache.org/jira/browse/LOG4J2-2814):
+Fix Javadoc for ScriptPatternSelector.
+* [LOG4J2-2793](https://issues.apache.org/jira/browse/LOG4J2-2793):
+Allow trailing and leading spaces in log level. Thanks to Renukaprasad C.
+* [LOG4J2-2791](https://issues.apache.org/jira/browse/LOG4J2-2791):
+Correct JsonLayout timestamp sorting issue. Thanks to Johan Karlberg.
+* [LOG4J2-2817](https://issues.apache.org/jira/browse/LOG4J2-2817):
+Allow the file size action to parse the value without being sensitive to the current locale. Thanks to Trejkaz.
+* [LOG4J2-2794](https://issues.apache.org/jira/browse/LOG4J2-2794):
+Make YamlLayoutTest more resiliant to environmental differences. Thanks to Johan Karlberg.
+* [LOG4J2-2790](https://issues.apache.org/jira/browse/LOG4J2-2790):
+Conditionally allocate PluginEntry during PluginCache loading. Thanks to Marius Volkhart.
+* [LOG4J2-2811](https://issues.apache.org/jira/browse/LOG4J2-2811):
+Add missing includeLocation parameter when creating AsyncLogger. Thanks to Kuojian21.
+* [LOG4J2-2761](https://issues.apache.org/jira/browse/LOG4J2-2761):
+Fix Exceptions when whitespace is in the file path and Java security manager is used. Thanks to Uwe Schindler.
+* [LOG4J2-2809](https://issues.apache.org/jira/browse/LOG4J2-2809):
+Avoid NullPointerException when StackWalker returns null. Thanks to Romain Manni-Bucau.
+* [LOG4J2-2805](https://issues.apache.org/jira/browse/LOG4J2-2805):
+TimeFilter did not handle daylight saving time transitions and did not support a range over 2 days.
 
 ### Changes
-* [LOG4J2-2789](https://issues.apache.org/jira/browse/LOG4J2-2789):
-Conditionally perform status logging calculations in PluginRegistry. Thanks to Marius Volkhart.
-* [LOG4J2-2782](https://issues.apache.org/jira/browse/LOG4J2-2782):
-Use LinkedBlockingQueue instead of synchronized collction in StatusConfiguration.
-* [LOG4J2-2777](https://issues.apache.org/jira/browse/LOG4J2-2777):
-Add a retry count attribute to the KafkaAppender. Thanks to joongs4.
-* [LOG4J2-2745](https://issues.apache.org/jira/browse/LOG4J2-2745):
-Update log4j-slf4j18-impl slf4j version to 1.8.0-beta4 from 1.8.0-alpha2.
-* [LOG4J2-2763](https://issues.apache.org/jira/browse/LOG4J2-2763):
-Update dependencies.
+* [LOG4J2-2457](https://issues.apache.org/jira/browse/LOG4J2-2457):
+Allow the file extension in the file pattern to be modified during reconfiguration.
+* [LOG4J2-2819](https://issues.apache.org/jira/browse/LOG4J2-2819):
+Add support for specifying an SSL configuration for SmtpAppender.
+* [LOG4J2-2520](https://issues.apache.org/jira/browse/LOG4J2-2520):
+Allow servlet context path to be retrieved without "/".
+* [LOG4J2-2818](https://issues.apache.org/jira/browse/LOG4J2-2818):
+Allow Spring Lookup to return default and active profiles.
+* [LOG4J2-2815](https://issues.apache.org/jira/browse/LOG4J2-2815):
+Allow Spring Boot applications to use composite configuratons.
+* [LOG4J2-2779](https://issues.apache.org/jira/browse/LOG4J2-2779):
+Add ContextDataProviders as an alternative to having to implement a ContextDataInjector.
+* [LOG4J2-2812](https://issues.apache.org/jira/browse/LOG4J2-2812):
+[JDBC] Throw a AppenderLoggingException instead of an NPE in the JDBC database manager.
 
 ---
 
-Apache Log4j 2.13.1 requires a minimum of Java 8 to build and run. Log4j 2.3 was the
-last release that supported Java 6 and Log4j 2.11.2 is the last release to support Java 7.
+Apache Log4j 2.13.2 requires a minimum of Java 8 to build and run. Log4j 2.3 was the
+last release that supported Java 6 and Log4j 2.12.1 is the last release to support Java 7.
 
 For complete information on Apache Log4j 2, including instructions on how to submit bug
 reports, patches, or suggestions for improvement, see the Apache Apache Log4j 2 website:
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
index 7b0ef87..dfa7cec 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
@@ -1,3 +1,19 @@
+/*
+ * 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.
+ */
 package org.apache.logging.log4j.core.appender.rolling.action;
 
 import org.apache.logging.log4j.core.appender.rolling.FileSize;
diff --git a/pom.xml b/pom.xml
index e2bcaa8..6451cb3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -181,7 +181,7 @@
   <properties>
     <!-- make sure to update these for each release! -->
     <log4jParentDir>${basedir}</log4jParentDir>
-    <Log4jReleaseVersion>2.13.1</Log4jReleaseVersion>
+    <Log4jReleaseVersion>2.13.2</Log4jReleaseVersion>
     <Log4jReleaseManager>Ralph Goers</Log4jReleaseManager>
     <Log4jReleaseKey>B3D8E1BA</Log4jReleaseKey>
     <!--<Log4jReleaseManager>Matt Sicker</Log4jReleaseManager> -->
@@ -242,7 +242,7 @@
     <jctoolsVersion>1.2.1</jctoolsVersion>
     <mockitoVersion>2.25.1</mockitoVersion>
     <argLine>-Xms256m -Xmx1024m</argLine>
-    <javaTargetVersion>1.7</javaTargetVersion>
+    <javaTargetVersion>1.8</javaTargetVersion>
     <module.name />
   </properties>
   <pluginRepositories>
diff --git a/src/changes/announcement.vm b/src/changes/announcement.vm
index c5f5015..6ddfe66 100644
--- a/src/changes/announcement.vm
+++ b/src/changes/announcement.vm
@@ -65,14 +65,15 @@
 
 The artifacts may be downloaded from https://logging.apache.org/log4j/2.x/download.html.
 
-This release contains bugfixes and very minor enhancements.
+This release contains bugfixes and minor enhancements.
 
 Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
 log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with SLF4J 1.8.x and
 later.
 
-Note that the XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the "timeMillis" attribute
-and instead have an "Instant" element with "epochSecond" and "nanoOfSecond" attributes.
+Note that the default XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the "timeMillis"
+attribute and instead have an "Instant" element with "epochSecond" and "nanoOfSecond" attributes. If the previous
+behavior is desired the "includeTimeMillis" attribute may be set to true on each of the respective Layouts.
 
 The Log4j ${relVersion} API, as well as many core components, maintains binary compatibility with previous releases.
 
@@ -117,7 +118,7 @@
 ---
 
 Apache Log4j ${relVersion} requires a minimum of Java 8 to build and run. Log4j 2.3 was the
-last release that supported Java 6 and Log4j 2.11.2 is the last release to support Java 7.
+last release that supported Java 6 and Log4j 2.12.1 is the last release to support Java 7.
 
 For complete information on ${project.name}, including instructions on how to submit bug
 reports, patches, or suggestions for improvement, see the Apache ${project.name} website:
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c7db1cd..9c44684 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -29,7 +29,7 @@
          - "update" - Change
          - "remove" - Removed
     -->
-    <release version="2.13.2" date="2020-MM-DD" description="GA Release 2.13.2">
+    <release version="2.13.2" date="2020-04-23" description="GA Release 2.13.2">
       <action issue="LOG4J2-2824" dev="rgoers" type="fix" due-to="CrazyBills">
         Implement requiresLocation in GelfLayout to reflect whether location information is used in the message Pattern.
       </action>
diff --git a/src/site/xdoc/manual/configuration.xml.vm b/src/site/xdoc/manual/configuration.xml.vm
index ce22a0f..a3da3b8 100644
--- a/src/site/xdoc/manual/configuration.xml.vm
+++ b/src/site/xdoc/manual/configuration.xml.vm
@@ -813,7 +813,7 @@
 rootLogger.appenderRef.stdout.ref = STDOUT
           </pre>
           <a name="Loggers"/>
-          <h4>Configuring loggers</h4>
+          <h4>Configuring Loggers</h4>
           <p>
             An understanding of how loggers work in Log4j is critical before trying to configure them.
             Please reference the Log4j <a href="./architecture.html">architecture</a> if more information is
@@ -828,6 +828,17 @@
             the default value of true will be used.
           </p>
           <p>
+            Capturing location information (the class name, file name, method name, and line number of the caller)
+            can be slow. Log4j tries to optimize this by reducing the size of the stack that must be traversed
+            to find the caller of the logging method. It does this by determining if any component that might
+            be accessed requires location information. This can cause performance issues if a logger is configured
+            at a level like trace or debug with the expectation that most logs will be filtered on an Appender
+            reference or Appender as Log4j will calculate the location information even though the log event
+            is going to be discarded. To disable this behavior the <code>includeLocation</code> attribute
+            can be set to false on the LoggerConfig. This will cause Log4j to defer calculating the location
+            information until absolutely necessary.
+          </p>
+          <p>
             A LoggerConfig (including the root LoggerConfig) can be configured with properties that will be added
             to the properties copied from the ThreadContextMap. These properties can be referenced from Appenders,
             Filters, Layouts, etc just as if they were part of the ThreadContext Map. The properties can contain
diff --git a/toolchains-jenkins-win.xml b/toolchains-jenkins-win.xml
index df01b39..5c98f42 100644
--- a/toolchains-jenkins-win.xml
+++ b/toolchains-jenkins-win.xml
@@ -3,17 +3,17 @@
   ~ 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 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
   ~
-  ~     https://www.apache.org/licenses/LICENSE-2.0
+  ~      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 license for the specific language governing permissions and
+  ~ limitations under the license.
   -->
 <toolchains>
   <!-- JDK toolchains -->
