Prepare for release
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index dbc68cb..2a993f2 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,111 +1,51 @@
 
-              Apache Log4j 2.4 RELEASE NOTES
+              Apache Log4j 2.4.1 RELEASE NOTES
 
-The Apache Log4j 2 team is pleased to announce the Log4j 2.4 release!
+The Apache Log4j 2 team is pleased to announce the Log4j 2.4.1 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
 many other modern features such as support for Markers, property substitution using Lookups, and asynchronous
 Loggers. In addition, Log4j 2 will not lose events while reconfiguring.
 
-This is the eighth GA release. It contains several bugfixes and new features. As of this release
-Log4j now requires a minimum of Java 7.
+This is the ninth GA release. It contains several bugfixes and new features.
+Log4j 2 requires a minimum of Java 7.
 
-GA Release 2.4
+GA Release 2.4.1
 
 Changes in this version include:
 
 New features:
-o LOG4J2-635:  Add support for configuration via Properties. 
-o LOG4J2-952:  Add ConfigurationBuilder. 
-o LOG4J2-599:  Added support for Java 8 lambda expressions to lazily construct a log message only if
-              the requested log level is enabled. 
-o LOG4J2-1118:  Updated Logger wrapper generator tool to add Java 8 lambda support for custom log levels. 
-o LOG4J2-1107:  New Appender for Apache Kafka. Thanks to Mikael Ståldal. 
-o LOG4J2-1113:  New publisher Appender for ZeroMQ (using JeroMQ). Thanks to Gary Gregory. 
-o LOG4J2-1088:  Add Comma Separated Value (CSV) layouts for parameter and event logging. Thanks to Gary Gregory. 
-o LOG4J2-1090:  Add Core Configurator APIs to change a logger's level. 
-o LOG4J2-1105:  Add API org.apache.logging.log4j.Level.isInRange(Level, Level). Thanks to Gary Gregory. 
-o LOG4J2-1106:  Add a LevelRangeFilter class. Thanks to Gary Gregory. 
-o LOG4J2-1076:  Added support for system nanosecond time in pattern layout. 
-o LOG4J2-1075:  Added support for compressing to bzip2 format on file rollover. 
-o LOG4J2-1077:  Support additional Apache Commons Compress compression formats on rollover: Deflate, Pack200, XY. 
-o LOG4J2-767:  New module for Liquibase integration. Thanks to Mikael Ståldal. 
-o LOG4J2-1023:  New RewritePolicy for changing level of a log event. Thanks to Mikael Ståldal. 
-o LOG4J2-1015:  Add a way to route messages based on the %marker in Layout for RoutingAppender. Thanks to Daniel Marcotte. 
-o LOG4J2-1050:  Add a Log4jLookup class to help write log files relative to log4j2.xml. Thanks to Adam Retter. 
-o LOG4J2-1057:  Add API org.apache.logging.log4j.LogManager.getFormatterLogger(). 
-o LOG4J2-1066:  Expose Log4jContextFactory's ShutdownCallbackRegistry. Thanks to Charles Allen. 
+o LOG4J2-1129:  Allow PatternLayout to select a pattern to use based on some selection criteria. 
+o LOG4J2-1145:  Add %equals to PatternLayout to test and replace patterns with strings. 
+o LOG4J2-1147:  Add %equalsIgnoreCase to PatternLayout to test and replace patterns with strings. 
+o LOG4J2-1146:  Add %notEmpty to PatternLayout to avoid output of patterns where all variables are empty. 
+o LOG4J2-1020:  Add possibility to set shutdown timeout on AsyncAppender. 
 
 Fixed Bugs:
-o LOG4J2-1121:  Fixed potential race condition on reconfiguration. Introduced ReliabilityStrategy to facilitate
-        switching between different mechanisms for preventing log events from being dropped on reconfiguration. 
-o LOG4J2-1123:  Core Configurator.initialize(String, ClassLoader, String) fails to work when config location is a file path. Thanks to Gary Gregory. 
-o LOG4J2-1117:  OutputStreamManager in ConsoleAppender leaking managers. Thanks to Marcus Thiesen. 
-o LOG4J2-1044:  Write pending events to Flume when the appender is stopped. 
-o LOG4J2-1108:  NullPointerException when passing null to java.util.logging.Logger.setLevel(). Thanks to Mikael Ståldal. 
-o LOG4J2-1110:  org.apache.logging.log4j.jul.CoreLogger.setLevel() checks for security permission too late. 
-o LOG4J2-1084:  Misleading StatusLogger WARN event in LogManager with java.util.Map. Thanks to Philipp Schneider. 
-o LOG4J2-1051:  NoClassDefFoundError when starting app on Google App Engine. Thanks to Lukasz Lenart. 
-o LOG4J2-684:  ExtendedThrowablePatternConverter does not print suppressed exceptions. Thanks to Joern Huxhorn, Mauro Molinari. 
-o LOG4J2-1069:  Improper handling of JSON escape chars when deserializing JSON log events. Thanks to Sam Braam. 
-o LOG4J2-1068:  Exceptions not logged when using TcpSocketServer + SerializedLayout. Thanks to Andy McMullan. 
-o LOG4J2-1067:  ThrowableProxy getExtendedStackTraceAsString throws NPE on deserialized nested exceptions. Thanks to Sam Braam. 
-o LOG4J2-1049:  AsyncAppender now resets the thread interrupted flag after catching InterruptedException. Thanks to Robert Schaft. 
-o LOG4J2-1048:  FileConfigurationMonitor unnecessarily calls System.currentTimeMillis() causing high CPU usage. Thanks to Nikhil. 
-o LOG4J2-1037:  Backward compatibility issue in log4j-1.2-api NDC pop() and peek(). Thanks to Marc Dergacz. 
-o LOG4J2-1025:  Custom java.util.logging.Level gives null Log4j Level and causes NPE. Thanks to Mikael Ståldal. 
-o LOG4J2-1033:  SimpleLogger creates unnecessary Map objects by calling ThreadContext.getContext() instead of getImmutableContext(). Thanks to Mikael Ståldal. 
-o LOG4J2-1026:  HighlightConverter does not obey noConsoleNoAnsi. 
-o LOG4J2-1019:  ZipCompressAction leaves files open until GC when an IO error takes place. 
-o LOG4J2-1020:  GzCompressAction leaves files open until GC when an IO error takes place. 
-o LOG4J2-1038:  Incorrect documentation for layout default charset. Thanks to Gili. 
-o LOG4J2-1042:  Socket and Syslog appenders don't take timeout into account at startup. Thanks to Guillaume Turri. 
-o LOG4J2-934:  Circular suppressed Exception throws StackOverflowError. Thanks to Kenneth Gendron. 
-o LOG4J2-1046:  Circular Exception cause throws StackOverflowError. Thanks to Kenneth Gendron. 
-o LOG4J2-982:  Use System.nanoTime() to measure time intervals. Thanks to Mikhail Mazurskiy. 
-o LOG4J2-1045:  Externalize log4j2.xml via URL resource. Thanks to Günter Albrecht. 
-o LOG4J2-1058:  Log4jMarker#contains(String) does not respect org.slf4j.Marker contract. Thanks to Daniel Branzea. 
-o LOG4J2-1060:  Log4jMarker#contains(Marker) does not respect org.slf4j.Marker contract. 
-o LOG4J2-1061:  Log4jMarker#remove(Marker) does not respect org.slf4j.Marker contract. 
-o LOG4J2-1062:  Log4jMarker#add(Marker) does not respect org.slf4j.Marker contract. 
-o LOG4J2-1064:  org.apache.logging.slf4j.Log4jMarker does not implement org.slf4j.Marker.equals(Object) org.slf4j.Marker.hashCode(). 
-o LOG4J2-889:  Header in layout should not be written on application startup if appending to an existing file. Fixes LOG4J2-1030. Thanks to Maciej Karaƛ, Kenneth Leider. 
-o LOG4J2-918:  Clarify documentation for combining async with sync loggers. 
-o LOG4J2-1078:  GelfLayout throws exception if some log event fields are null. Thanks to Mikael Ståldal. 
+o LOG4J2-1153:  Fixed NullPointerException when only root logger is defined (and no named loggers) in configuration properties file. 
+o LOG4J2-1140:  Fixed bug where headers were not being written to first file with RollingFileAppender. 
+o LOG4J2-1149:  Fixed bug where PatternLayout predefined date pattern with time zone always renders default date format. 
+o LOG4J2-1050:  Fixed Log4jLookup. 
+o LOG4J2-1142:  Fix potential memory leak in web applications by using a straight ThreadLocal field instead of subclassing ThreadLocal. 
+o LOG4J2-1135:  Compression on rollover was broken: log file was renamed to .zip but not compressed. 
+o LOG4J2-1127:  log4j2.xml cannot be parsed on Oracle Weblogic 12c. 
+o LOG4J2-1132:  Do not use MongoDB driver 2.13.3 deprecated methods. 
+o LOG4J2-1144:  Add %markerSimpleName in pattern layout should evaluate to marker name (not toString()). 
+o LOG4J2-1126:  Web site corrections and updates. 
 
 Changes:
-o LOG4J2-1017:  Update Java platform from Java 6 to 7. From this version onwards, log4j 2 requires Java 7. 
-o LOG4J2-812:  PatternLayout timestamp formatting performance improvement: replaced synchronized SimpleDateFormat with
-        Apache Commons FastDateFormat. This and better caching resulted in a ~3-30X faster timestamp formatting. 
-o LOG4J2-1097:  PatternLayout timestamp formatting performance improvement: predefined date formats (and variants using
-        a period '.' millisecond separator instead of ',') are now formatted ~2-10X faster than other date formats. 
-o LOG4J2-1096:  Improved performance of ParameterizedMessage::getFormattedMessage by ~2X. 
-o LOG4J2-1120:  LoggerConfig performance improvements: avoid unnecessary lock acquisition, use more efficient data structure. 
-o LOG4J2-1125:  PatternLayout performance improvement by caching and reusing a ThreadLocal StringBuilder. 
-o LOG4J2-1114:  Add thread name to status logger layout. 
-o LOG4J2-1010:  Pass log event when interpolating logger properties. 
-o LOG4J2-1044:  Support batchSize in FlumeAvroManager. 
-o LOG4J2-1065:  Define org.apache.logging.log4j.Marker.equals(Object) and org.apache.logging.log4j.Marker.hashCode(). 
-o LOG4J2-1063:  Avoid creating temporary array object in org.apache.logging.slf4j.Log4jMarker.iterator(). 
-o LOG4J2-890:  log4j-web-2.1 should workaround a bug in JBOSS EAP 6.2. Thanks to Hassan Kalaldeh, Robert Andersson, Remko Popma. 
-o LOG4J2-403:  MongoDB appender, username and password should be optional. Thanks to Poorna Subhash P, Jeremy Lautman. 
-o LOG4J2-1035:  Log4j2 tries to SystemClassLoader when running on Google AppEngine. 
-o LOG4J2-1022:  Allow a list of keys to be specified in the MDC pattern converter. 
-o LOG4J2-959:  Fix FindBugs DM_DEFAULT_ENCODING bug in SimpleLogger.logMessage() and simplify code. 
-o LOG4J2-1036:  Update Apache Flume from 1.5.2 to 1.6.0. 
-o LOG4J2-1041:  Update MongoDB driver from 2.11.2 to 2.13.2. 
-o LOG4J2-1018:  Update database tests from H2 1.3.175 to 1.3.176. 
-o LOG4J2-1070:  Update Java Mail from 1.5.2 to 1.5.4. 
-o LOG4J2-1079:  Update Jackson from 2.5.3 to 2.5.4. 
-o LOG4J2-1879:  Update Jackson from 2.5.4 to 2.6.0. 
-o LOG4J2-1092:  Update Jackson from 2.6.0 to 2.6.1. 
-o LOG4J2-1104:  Update Apache Commons Compress from 1.9 to 1.10. 
+o LOG4J2-1151:  Performance improvement: backport Java 8 fast ISO-8859-1 String to byte[] encoder to AbstractStringLayout. 
+o LOG4J2-935:  Performance improvement when converting Strings to byte[] arrays. 
+o LOG4J2-1040:  Update MongoDB driver from 2.13.3 to 3.0.4. 
+o LOG4J2-1128:  Reuse StringBuilder to improve performance for String-based layouts: CSV, GELF, HTML, RFC524, Syslog. 
+o LOG4J2-1131:  Update mongo-java-driver from 2.13.2 to 2.13.3. 
+o LOG4J2-1138:  Do not use Jackson deprecated methods. 
+o LOG4J2-1139:  Update Jackson from 2.6.1 to 2.6.2. 
+o LOG4J2-1150:  Update kafka-clients from 0.8.2.1 to 0.8.2.2. 
 
-Removed:
-o Removed experimental interface LevelLogger which got committed to master by mistake. 
 
-Apache Log4j 2.4 requires a minimum of Java 7 to build and run. Log4j 2.4 and greater requires Java 7,
+Apache Log4j 2.4.1 requires a minimum of Java 7 to build and run. Log4j 2.4 and greater requires Java 7,
 version 2.3 required Java 6.
 
 Basic compatibility with Log4j 1.x is provided through the log4j-1.2-api component, however it does not implement some of the
diff --git a/pom.xml b/pom.xml
index bfad096..78dad40 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,8 +164,8 @@
   <properties>
     <!-- make sure to update these for each release! -->
     <log4jParentDir>${basedir}</log4jParentDir>
-    <Log4jReleaseVersion>2.4</Log4jReleaseVersion>
-    <Log4jReleaseCount>eighth</Log4jReleaseCount>
+    <Log4jReleaseVersion>2.4.1</Log4jReleaseVersion>
+    <Log4jReleaseCount>ninth</Log4jReleaseCount>
     <Log4jReleaseManager>Ralph Goers</Log4jReleaseManager>
     <Log4jReleaseKey>B3D8E1BA</Log4jReleaseKey>
     <!-- <Log4jReleaseManager>Matt Sicker</Log4jReleaseManager>
diff --git a/src/changes/announcement.vm b/src/changes/announcement.vm
index a8d5599..fa38eba 100644
--- a/src/changes/announcement.vm
+++ b/src/changes/announcement.vm
@@ -26,8 +26,8 @@
 many other modern features such as support for Markers, property substitution using Lookups, and asynchronous
 Loggers. In addition, Log4j 2 will not lose events while reconfiguring.
 
-This is the ${relCount} GA release. It contains several bugfixes and new features. As of this release
-Log4j now requires a minimum of Java 7.
+This is the ${relCount} GA release. It contains several bugfixes and new features.
+Log4j 2 requires a minimum of Java 7.
 
 ## Hack to improve layout: replace all pairs of spaces with a single new-line
 $release.description.replaceAll("  ", "
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index ab6a089..e250e6e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -23,15 +23,15 @@
     <title>Changes</title>
   </properties>
   <body>
-    <release version="2.4.1" date="2015-MM-DD" description="GA Release 2.4.1">
+    <release version="2.4.1" date="2015-10-08" description="GA Release 2.4.1">
       <action issue="LOG4J2-1129" dev="rgoers" type="add">
         Allow PatternLayout to select a pattern to use based on some selection criteria.
       </action>
       <action issue="LOG4J2-1145" dev="ggregory" type="add">
-        Add %equals to PatternLayout to test and replace patterns with strings. 
+        Add %equals to PatternLayout to test and replace patterns with strings.
       </action>
       <action issue="LOG4J2-1147" dev="ggregory" type="add">
-        Add %equalsIgnoreCase to PatternLayout to test and replace patterns with strings. 
+        Add %equalsIgnoreCase to PatternLayout to test and replace patterns with strings.
       </action>
       <action issue="LOG4J2-1146" dev="ggregory" type="add">
         Add %notEmpty to PatternLayout to avoid output of patterns where all variables are empty.
@@ -86,13 +86,13 @@
       </action>
       <action issue="LOG4J2-1138" dev="ggregory" type="update">
         Do not use Jackson deprecated methods.
-      </action>      
+      </action>
       <action issue="LOG4J2-1139" dev="ggregory" type="update">
         Update Jackson from 2.6.1 to 2.6.2.
-      </action>      
+      </action>
       <action issue="LOG4J2-1150" dev="ggregory" type="update">
         Update kafka-clients from 0.8.2.1 to 0.8.2.2.
-      </action>      
+      </action>
     </release>
     <release version="2.4" date="2015-09-20" description="GA Release 2.4">
       <action issue="LOG4J2-635" dev="rgoers" type="add">