You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/08/31 00:20:13 UTC

[46/50] [abbrv] git commit: Merge branch 'master' into messaging-module

Merge branch 'master' into messaging-module

Conflicts:
	log4j-core/pom.xml
	pom.xml


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/e1db6e23
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/e1db6e23
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/e1db6e23

Branch: refs/heads/messaging-module
Commit: e1db6e23ce32956d744ea29ad492134b48806c84
Parents: 6befe58 1167a72
Author: Matt Sicker <bo...@gmail.com>
Authored: Sat Aug 30 17:14:10 2014 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Sat Aug 30 17:14:10 2014 -0500

----------------------------------------------------------------------
 .gitignore                                      |   4 +
 BUILDING.txt                                    |   4 +-
 RELEASE-NOTES.txt                               | 103 +--
 checkstyle-suppressions.xml                     |   8 +
 checkstyle.xml                                  |   1 -
 log4j-1.2-api/.gitignore                        |   4 +
 log4j-1.2-api/pom.xml                           |   6 +-
 .../src/main/java/org/apache/log4j/Layout.java  |  13 +-
 .../apache/log4j/BasicConfigurationFactory.java |   2 +
 .../test/java/org/apache/log4j/LoggerTest.java  |   2 +
 log4j-api/.gitignore                            |   4 +
 log4j-api/pom.xml                               |   8 +-
 .../org/apache/logging/log4j/LogManager.java    |  53 +-
 .../java/org/apache/logging/log4j/Logger.java   |  80 +-
 .../org/apache/logging/log4j/ThreadContext.java | 106 +--
 .../message/ExtendedThreadInformation.java      |  28 +-
 .../logging/log4j/message/FormattedMessage.java |   8 +-
 .../logging/log4j/message/MapMessage.java       |   5 +
 .../logging/log4j/message/ObjectMessage.java    |  22 +-
 .../log4j/message/ParameterizedMessage.java     |  52 +-
 .../log4j/message/StructuredDataMessage.java    |  31 +-
 .../logging/log4j/message/package-info.java     |   2 +-
 .../org/apache/logging/log4j/package-info.java  |   2 +-
 .../logging/log4j/spi/AbstractLogger.java       | 842 +------------------
 .../log4j/spi/DefaultThreadContextMap.java      |  42 -
 .../log4j/spi/DefaultThreadContextStack.java    | 152 ++--
 .../log4j/spi/MutableThreadContextStack.java    |  41 +
 .../org/apache/logging/log4j/spi/Provider.java  |  92 +-
 .../logging/log4j/spi/ThreadContextMap.java     |  10 +-
 .../logging/log4j/spi/ThreadContextStack.java   |   2 +-
 .../logging/log4j/status/package-info.java      |   2 +-
 .../apache/logging/log4j/util/Activator.java    | 108 +++
 .../apache/logging/log4j/util/LoaderUtil.java   |  59 ++
 .../logging/log4j/util/PropertiesUtil.java      |  68 +-
 .../apache/logging/log4j/util/ProviderUtil.java |  60 +-
 .../org/apache/logging/log4j/util/Strings.java  |  22 +
 .../java/org/apache/log4j/util/SerialUtil.java  |  65 ++
 .../log4j/message/FormattedMessageTest.java     |  25 +
 .../log4j/message/LocalizedMessageTest.java     |  24 +
 .../logging/log4j/message/MapMessageTest.java   |  18 +
 .../log4j/message/MessageFormatMessageTest.java |  25 +
 .../apache/logging/log4j/message/Mutable.java   |  34 +
 .../log4j/message/ObjectMessageTest.java        |  51 ++
 .../log4j/message/ParameterizedMessageTest.java |  12 +
 .../message/StringFormattedMessageTest.java     |  25 +
 .../message/StructuredDataMessageTest.java      |  19 +
 .../log4j/message/ThreadDumpMessageTest.java    |  16 +
 .../spi/DefaultThreadContextStackTest.java      |  50 +-
 .../spi/MutableThreadContextStackTest.java      |  83 +-
 log4j-bom/.gitignore                            |   2 +
 log4j-bom/pom.xml                               |  39 +-
 log4j-core/.gitignore                           |   4 +
 log4j-core/LOG4J2-807.log                       |  24 +
 log4j-core/pom.xml                              |   9 +-
 .../logging/log4j/core/AbstractLifeCycle.java   |   6 +-
 .../org/apache/logging/log4j/core/Appender.java |  31 +-
 .../org/apache/logging/log4j/core/Filter.java   |   4 +-
 .../org/apache/logging/log4j/core/Layout.java   |   2 +
 .../apache/logging/log4j/core/LifeCycle.java    |  11 +-
 .../logging/log4j/core/LifeCycleState.java      |  33 -
 .../org/apache/logging/log4j/core/LogEvent.java |  20 +-
 .../logging/log4j/core/LogEventListener.java    |   1 +
 .../org/apache/logging/log4j/core/Logger.java   |  10 +
 .../logging/log4j/core/LoggerContext.java       |  60 +-
 .../log4j/core/appender/AbstractAppender.java   |   3 +
 .../appender/AbstractOutputStreamAppender.java  |   2 +
 .../log4j/core/appender/AsyncAppender.java      |   2 +
 .../log4j/core/appender/ConsoleAppender.java    |   6 +-
 .../log4j/core/appender/FailoverAppender.java   |   4 +-
 .../log4j/core/appender/FileAppender.java       |   3 +-
 .../core/appender/RandomAccessFileAppender.java |   4 +-
 .../core/appender/RollingFileAppender.java      |   2 +
 .../RollingRandomAccessFileAppender.java        |   2 +
 .../log4j/core/appender/SmtpAppender.java       |   1 +
 .../log4j/core/appender/SocketAppender.java     |   5 +-
 .../log4j/core/appender/SyslogAppender.java     |   3 +-
 .../appender/db/AbstractDatabaseAppender.java   |   4 +-
 .../appender/db/AbstractDatabaseManager.java    |  19 +-
 .../core/appender/db/jdbc/JdbcAppender.java     |   2 +
 .../appender/db/jdbc/JdbcDatabaseManager.java   |  29 +-
 .../log4j/core/appender/db/jpa/JpaAppender.java |   2 +
 .../log4j/core/appender/package-info.java       |   2 +-
 .../core/appender/rewrite/RewriteAppender.java  |   3 +
 .../appender/rolling/RollingFileManager.java    |   2 +-
 .../rolling/action/FileRenameAction.java        |   6 +-
 .../core/appender/routing/RoutingAppender.java  |   3 +-
 .../logging/log4j/core/async/AsyncLogger.java   |   7 +-
 .../log4j/core/async/AsyncLoggerConfig.java     |   8 +-
 .../core/async/AsyncLoggerConfigHelper.java     |   3 +
 .../log4j/core/async/AsyncLoggerContext.java    |   2 +
 .../log4j/core/async/RingBufferLogEvent.java    |   5 -
 .../core/config/AbstractConfiguration.java      |  16 +-
 .../log4j/core/config/AppenderControl.java      |   2 +
 .../logging/log4j/core/config/AppenderRef.java  |   2 +-
 .../log4j/core/config/ConfigurationFactory.java |  12 +-
 .../log4j/core/config/DefaultConfiguration.java |   2 +
 .../logging/log4j/core/config/LoggerConfig.java |  37 +-
 .../log4j/core/config/NullConfiguration.java    |   1 +
 .../core/config/json/JsonConfiguration.java     |   8 +-
 .../log4j/core/config/json/package-info.java    |  20 +
 .../logging/log4j/core/config/package-info.java |   2 +-
 .../log4j/core/config/plugins/Plugin.java       |   5 +
 .../core/config/plugins/osgi/Activator.java     |  94 ---
 .../core/config/plugins/osgi/package-info.java  |  21 -
 .../config/plugins/processor/package-info.java  |   2 +-
 .../core/config/plugins/util/PluginManager.java | 164 +++-
 .../core/config/plugins/util/ResolverUtil.java  |   5 +-
 .../log4j/core/config/xml/XmlConfiguration.java |  36 +-
 .../log4j/core/config/xml/package-info.java     |  20 +
 .../core/config/yaml/YamlConfiguration.java     |   2 +
 .../log4j/core/config/yaml/package-info.java    |  20 +
 .../log4j/core/filter/AbstractFilter.java       |   2 +
 .../log4j/core/filter/AbstractFilterable.java   |   2 +
 .../logging/log4j/core/filter/BurstFilter.java  |   2 +
 .../log4j/core/filter/CompositeFilter.java      |   2 +
 .../core/filter/DynamicThresholdFilter.java     |   3 +
 .../logging/log4j/core/filter/MapFilter.java    |   3 +
 .../logging/log4j/core/filter/MarkerFilter.java |   2 +
 .../logging/log4j/core/filter/RegexFilter.java  |  76 +-
 .../log4j/core/filter/StructuredDataFilter.java |   2 +
 .../core/filter/ThreadContextMapFilter.java     |   2 +
 .../log4j/core/filter/ThresholdFilter.java      |   2 +
 .../logging/log4j/core/filter/TimeFilter.java   |   3 +
 .../logging/log4j/core/filter/package-info.java |   2 +-
 .../log4j/core/impl/Log4jContextFactory.java    |  20 +-
 .../logging/log4j/core/impl/Log4jLogEvent.java  |  55 +-
 .../logging/log4j/core/impl/ThrowableProxy.java |   7 +-
 .../logging/log4j/core/impl/package-info.java   |   2 +-
 .../log4j/core/jackson/package-info.java        |  21 +
 .../log4j/core/jmx/ContextSelectorAdmin.java    |   2 +-
 .../log4j/core/jmx/LoggerConfigAdmin.java       |   4 +-
 .../apache/logging/log4j/core/jmx/Server.java   |   6 +-
 .../log4j/core/jmx/StatusLoggerAdminMBean.java  |   6 +-
 .../logging/log4j/core/jmx/package-info.java    |   2 +-
 .../log4j/core/layout/PatternLayout.java        |   4 +-
 .../logging/log4j/core/layout/package-info.java |   2 +-
 .../log4j/core/lookup/ContextMapLookup.java     |   2 +-
 .../logging/log4j/core/lookup/DateLookup.java   |   6 +-
 .../logging/log4j/core/lookup/Interpolator.java |  26 +-
 .../lookup/JmxRuntimeInputArgumentsLookup.java  |  36 +
 .../logging/log4j/core/lookup/JndiLookup.java   |  21 +-
 .../logging/log4j/core/lookup/MapLookup.java    | 116 ++-
 .../log4j/core/lookup/ResourceBundleLookup.java |  20 +-
 .../logging/log4j/core/lookup/StrLookup.java    |  19 +-
 .../log4j/core/lookup/StrSubstitutor.java       |  63 +-
 .../log4j/core/lookup/StructuredDataLookup.java |   6 +-
 .../core/lookup/SystemPropertiesLookup.java     |  16 +-
 .../logging/log4j/core/lookup/package-info.java |   2 +-
 .../logging/log4j/core/net/package-info.java    |   2 +-
 .../core/net/ssl/KeyStoreConfiguration.java     |   2 +-
 .../core/net/ssl/TrustStoreConfiguration.java   |   2 +-
 .../log4j/core/net/ssl/package-info.java        |   2 +-
 .../logging/log4j/core/osgi/Activator.java      |  82 ++
 .../logging/log4j/core/osgi/package-info.java   |  21 +
 .../apache/logging/log4j/core/package-info.java |   2 +-
 .../core/pattern/DatePatternConverter.java      |  27 +-
 .../log4j/core/pattern/PatternParser.java       |   4 +-
 .../core/selector/JndiContextSelector.java      |   5 +-
 .../log4j/core/selector/package-info.java       |   2 +-
 .../logging/log4j/core/tools/Generate.java      | 548 ++++++++++++
 .../logging/log4j/core/tools/package-info.java  |  20 +
 .../apache/logging/log4j/core/util/Assert.java  |   6 +-
 .../log4j/core/util/BundleResourceLoader.java   |   1 -
 .../logging/log4j/core/util/Charsets.java       |  32 +-
 .../logging/log4j/core/util/ClockFactory.java   |   3 +
 .../apache/logging/log4j/core/util/Closer.java  |  28 -
 .../DefaultShutdownRegistrationStrategy.java    |  41 +
 .../logging/log4j/core/util/JndiCloser.java     |  55 ++
 .../apache/logging/log4j/core/util/Loader.java  |  49 +-
 .../log4j/core/util/OptionConverter.java        |  38 +-
 .../logging/log4j/core/util/SetUtils.java       |   9 +-
 .../core/util/ShutdownRegistrationStrategy.java |  61 ++
 .../logging/log4j/core/util/UuidUtil.java       |   2 +-
 .../logging/log4j/core/util/package-info.java   |   2 +-
 log4j-core/src/site/resources/images/logo.jpg   | Bin 8184 -> 0 bytes
 .../src/site/resources/images/ls-logo.jpg       | Bin 32725 -> 0 bytes
 log4j-core/src/site/xdoc/index.xml              |   7 +-
 .../DebugDisabledPerformanceComparison.java     | 270 ------
 .../apache/logging/log4j/LocationPerfCheck.java |  49 --
 .../logging/log4j/Log4jInitPerformance.java     |  57 --
 .../log4j/core/BasicConfigurationFactory.java   |   1 +
 .../apache/logging/log4j/core/LoggerTest.java   |  13 +
 .../log4j/core/TimestampMessageTest.java        |  93 ++
 .../ConsoleAppenderNoAnsiStyleLayoutMain.java   |   2 +
 .../core/appender/ConsoleAppenderTest.java      |   1 -
 .../log4j/core/appender/Jira739Test.java        |  55 ++
 .../core/appender/ProgressConsoleTest.java      |  20 +-
 .../db/AbstractDatabaseAppenderTest.java        |   3 +
 .../db/jdbc/AbstractJdbcAppenderTest.java       |   1 -
 .../appender/db/jdbc/JdbcH2AppenderTest.java    |   1 -
 .../appender/routing/RoutingAppenderTest.java   |   2 +-
 .../async/AsyncLoggerThreadContextTest.java     |  76 ++
 .../async/AsyncLoggerTimestampMessageTest.java  | 101 +++
 .../log4j/core/async/AsyncRootReloadTest.java   |  44 +
 .../core/async/RingBufferLogEventTest.java      |  56 --
 .../core/async/perftest/PerfTestDriver.java     |   3 +-
 .../logging/log4j/core/config/XIncludeTest.java | 138 +++
 .../plugins/util/PluginManagerPackagesTest.java | 114 +++
 .../log4j/core/filter/RegexFilterTest.java      |  38 +-
 .../log4j/core/impl/ReflectionComparison.java   | 113 ---
 .../impl/ReflectiveCallerClassUtilityTest.java  |  43 +
 .../log4j/core/layout/PatternLayoutTest.java    |  22 +-
 .../log4j/core/lookup/ContextMapLookupTest.java |  51 ++
 .../lookup/MainInputArgumentsJmxLookupTest.java |  57 ++
 .../lookup/MainInputArgumentsMapLookup.java     |  41 +
 .../log4j/core/lookup/MapLookupTest.java        |  67 ++
 .../net/server/AbstractSocketServerTest.java    |   4 +-
 .../core/pattern/DatePatternConverterTest.java  | 133 +++
 .../log4j/core/pattern/PatternParserTest.java   |  29 +-
 .../core/tools/GenerateCustomLoggerTest.java    | 136 +++
 .../core/tools/GenerateExtendedLoggerTest.java  | 156 ++++
 .../log4j/core/util/CachedClockTest.java        |  36 -
 .../log4j/core/util/StandardCharsetsTest.java   |  71 ++
 .../logging/log4j/test/AvailablePortFinder.java |   2 +-
 .../log4j/test/appender/AlwaysFailAppender.java |   2 +
 .../log4j/test/appender/FailOnceAppender.java   |   2 +
 .../log4j/test/appender/InMemoryAppender.java   |   2 +
 .../log4j/test/appender/ListAppender.java       |   4 +-
 .../test/appender/UsesLoggingAppender.java      |   4 +-
 .../resources/AsyncLoggerThreadContextTest.xml  |  17 +
 .../AsyncLoggerTimestampMessageTest.xml         |  17 +
 .../src/test/resources/ContextMapLookupTest.xml |  29 +
 log4j-core/src/test/resources/LOG4J2-739.xml    |  28 +
 log4j-core/src/test/resources/LOG4J2-807.xml    |  15 +
 .../test/resources/bad/log4j-badfilename.xml    |   4 +-
 .../test/resources/bad/log4j-badfilterparam.xml |   4 +-
 .../src/test/resources/bad/log4j-badlayout.xml  |   4 +-
 .../src/test/resources/bad/log4j-loggers.xml    |   4 +-
 .../src/test/resources/bad/log4j-nofilter.xml   |   8 +-
 .../src/test/resources/bad/log4j-status.xml     |   4 +-
 .../customplugin/FixedStringLayout.java.source  |  54 ++
 .../test/resources/customplugin/log4j2-741.xml  |  29 +
 .../src/test/resources/log4j-filetest.xml       |   4 +-
 .../src/test/resources/log4j-rolling2.xml       |   8 +-
 log4j-core/src/test/resources/log4j-strict1.xml |   8 +-
 log4j-core/src/test/resources/log4j-test2.xml   |  17 +-
 .../src/test/resources/log4j-threaded.xml       |   4 +-
 .../src/test/resources/log4j-xinclude.xml       |   8 +-
 log4j-core/src/test/resources/log4j12-perf.xml  |   4 +-
 log4j-core/src/test/resources/log4j12-perf2.xml |  31 -
 log4j-core/src/test/resources/log4j2-319.xml    |   4 +-
 log4j-core/src/test/resources/log4j2-744.xml    |  31 +
 .../log4j2-console-highlight-default.xml        |   4 +-
 .../log4j2-console-highlight-logback.xml        |   4 +-
 .../test/resources/log4j2-console-highlight.xml |   4 +-
 .../resources/log4j2-console-style-ansi.xml     |   4 +-
 .../log4j2-console-style-name-ansi.xml          |   4 +-
 .../resources/log4j2-console-style-no-ansi.xml  |   2 +-
 .../src/test/resources/log4j2-console.xml       |   4 +-
 .../src/test/resources/log4j2-perf-filter.xml   |   4 +-
 log4j-core/src/test/resources/log4j2-perf.xml   |   4 +-
 log4j-core/src/test/resources/log4j2-perf2.xml  |  32 -
 log4j-core/src/test/resources/logback-flume.xml |   4 +-
 .../src/test/resources/logback-perf-filter.xml  |   4 +-
 log4j-core/src/test/resources/logback-perf.xml  |   4 +-
 log4j-core/src/test/resources/logback-perf2.xml |  29 -
 log4j-core/src/test/resources/logback-subst.xml |   4 +-
 log4j-distribution/pom.xml                      |   2 +-
 log4j-flume-ng/.gitignore                       |   4 +
 log4j-flume-ng/pom.xml                          |   6 +-
 .../log4j/flume/appender/FlumeAppender.java     |   3 +-
 log4j-flume-ng/src/site/xdoc/index.xml          | 243 ------
 log4j-flume-ng/src/site/xdoc/index.xml.vm       | 244 ++++++
 log4j-jcl/.gitignore                            |   4 +
 log4j-jcl/pom.xml                               |   6 +-
 log4j-jcl/src/site/xdoc/index.xml               |   6 +-
 .../apache/logging/log4j/jcl/LoggerTest.java    |   1 -
 log4j-jmx-gui/.gitignore                        |   4 +
 log4j-jmx-gui/pom.xml                           |   6 +-
 .../mom/jms/appender/JmsQueueAppender.java      |   2 +
 .../mom/jms/appender/JmsTopicAppender.java      |   4 +-
 .../log4j/mom/jms/appender/JmsQueueTest.java    |   3 +
 .../log4j/mom/jms/appender/JmsTopicTest.java    |   3 +
 log4j-nosql/.gitignore                          |   4 +
 log4j-nosql/pom.xml                             | 101 ++-
 .../log4j/nosql/appender/NoSqlAppender.java     |   1 +
 log4j-nosql/src/site/xdoc/index.xml             |  81 --
 log4j-nosql/src/site/xdoc/index.xml.vm          |  85 ++
 log4j-perf/.gitignore                           |   4 +
 log4j-perf/pom.xml                              |  10 +-
 .../logging/log4j/perf/jmh/ClocksBenchmark.java | 139 +++
 .../jmh/ConfiguratorInitializeBenchmark.java    |  72 ++
 .../log4j/perf/jmh/DebugDisabledBenchmark.java  | 107 +++
 .../perf/jmh/FormatterLoggerBenchmark.java      | 136 +++
 .../log4j/perf/jmh/Log4jLogEventBenchmark.java  |  55 +-
 .../log4j/perf/jmh/ReflectionBenchmark.java     | 106 +++
 .../log4j/perf/jmh/TimeFormatBenchmark.java     | 253 ++++++
 .../log4j/perf/jmh/UuidGeneratorBenchmark.java  |  51 ++
 .../logging/log4j/perf/jmh/package-info.java    |  23 +
 log4j-perf/src/main/resources/log4j12-perf2.xml |  31 +
 log4j-perf/src/main/resources/log4j2-perf2.xml  |  32 +
 log4j-perf/src/main/resources/logback-perf2.xml |  29 +
 log4j-samples/.gitignore                        |   2 +
 log4j-samples/flume-common/.gitignore           |   4 +
 log4j-samples/flume-common/pom.xml              |   2 +-
 .../logging/log4j/samples/util/NamingUtils.java |   6 +-
 log4j-samples/flume-embedded/.gitignore         |   4 +
 log4j-samples/flume-embedded/pom.xml            |   2 +-
 log4j-samples/flume-remote/.gitignore           |   4 +
 log4j-samples/flume-remote/pom.xml              |   2 +-
 log4j-samples/pom.xml                           |   2 +-
 log4j-slf4j-impl/.gitignore                     |   4 +
 log4j-slf4j-impl/pom.xml                        |   6 +-
 .../org/apache/logging/slf4j/Log4jLogger.java   |  10 +-
 .../org/apache/logging/slf4j/Log4jMarker.java   |   6 +-
 .../logging/slf4j/Log4jMarkerFactory.java       |  66 +-
 log4j-slf4j-impl/src/site/xdoc/index.xml        |   6 +-
 .../apache/logging/slf4j/CustomFlatMarker.java  |  76 ++
 .../org/apache/logging/slf4j/LoggerTest.java    |  53 +-
 .../src/test/resources/log4j-test1.xml          |   2 +-
 log4j-streams/pom.xml                           | 212 +++++
 .../logging/log4j/streams/ByteStreamLogger.java | 150 ++++
 .../logging/log4j/streams/CharStreamLogger.java | 110 +++
 .../streams/LoggerBufferedInputStream.java      | 105 +++
 .../log4j/streams/LoggerBufferedReader.java     |  92 ++
 .../log4j/streams/LoggerInputStream.java        |  92 ++
 .../log4j/streams/LoggerOutputStream.java       | 126 +++
 .../log4j/streams/LoggerPrintStream.java        | 273 ++++++
 .../log4j/streams/LoggerPrintWriter.java        | 247 ++++++
 .../logging/log4j/streams/LoggerReader.java     |  96 +++
 .../logging/log4j/streams/LoggerStreams.java    | 166 ++++
 .../logging/log4j/streams/LoggerWriter.java     | 122 +++
 .../log4j/streams/helpers/ByteStreamLogger.java | 150 ++++
 .../log4j/streams/helpers/CharStreamLogger.java | 110 +++
 ...LoggerBufferedInputStreamCallerInfoTest.java |  66 ++
 .../streams/LoggerBufferedInputStreamTest.java  |  29 +
 .../LoggerBufferedReaderCallerInfoTest.java     |  84 ++
 .../log4j/streams/LoggerBufferedReaderTest.java |  41 +
 .../LoggerInputStreamCallerInfoTest.java        |  54 ++
 .../log4j/streams/LoggerInputStreamTest.java    | 127 +++
 .../LoggerOutputStreamCallerInfoTest.java       |  50 ++
 .../log4j/streams/LoggerOutputStreamTest.java   | 125 +++
 .../LoggerPrintStreamCallerInfoTest.java        | 145 ++++
 .../log4j/streams/LoggerPrintStreamTest.java    | 116 +++
 .../LoggerPrintWriterCallerInfoTest.java        | 145 ++++
 .../log4j/streams/LoggerPrintWriterTest.java    | 118 +++
 .../streams/LoggerReaderCallerInfoTest.java     |  57 ++
 .../logging/log4j/streams/LoggerReaderTest.java | 141 ++++
 .../streams/LoggerStreamsCallerInfoTesting.java |  51 ++
 .../logging/log4j/streams/LoggerWriterTest.java | 124 +++
 .../logging/log4j/streams/StreamTesting.java    |  61 ++
 .../resources/log4j2-streams-calling-info.xml   |  30 +
 .../test/resources/log4j2-streams-unit-test.xml |  30 +
 log4j-taglib/.gitignore                         |   4 +
 log4j-taglib/pom.xml                            |   4 +-
 log4j-to-slf4j/.gitignore                       |   4 +
 log4j-to-slf4j/pom.xml                          |   7 +-
 log4j-web/.gitignore                            |   4 +
 log4j-web/pom.xml                               | 101 ++-
 .../log4j/web/Log4jWebInitializerImpl.java      |  35 +-
 .../logging/log4j/web/Log4jWebSupport.java      |   6 +-
 .../log4j/web/WebLoggerContextUtils.java        | 112 +++
 .../log4j/web/appender/ServletAppender.java     |   5 +-
 .../logging/log4j/web/TestAsyncServlet.java     |  60 ++
 pom.xml                                         |  64 +-
 src/changes/announcement.vm                     | 170 +++-
 src/changes/changes.xml                         | 173 +++-
 src/site/apt/download.apt.vm                    |   5 +-
 src/site/pdf.xml                                |   5 +-
 src/site/resources/images/logo.jpg              | Bin 24805 -> 14818 bytes
 src/site/site.vm                                |   2 +-
 src/site/site.xml                               |   9 +-
 src/site/xdoc/build.xml.vm                      |  14 +-
 src/site/xdoc/faq.xml                           |  10 +-
 src/site/xdoc/index.xml                         |   6 +-
 src/site/xdoc/javadoc.xml                       |   8 +
 src/site/xdoc/manual/api.xml                    |  22 +-
 src/site/xdoc/manual/appenders.xml              |   2 -
 src/site/xdoc/manual/architecture.xml           |  76 +-
 src/site/xdoc/manual/async.xml                  |  20 +
 src/site/xdoc/manual/configuration.xml.vm       |  17 +-
 src/site/xdoc/manual/customloglevels.xml.vm     | 233 +++++
 src/site/xdoc/manual/extending.xml              |  40 +-
 src/site/xdoc/manual/index.xml                  |  25 +-
 src/site/xdoc/manual/jmx.xml                    | 172 ----
 src/site/xdoc/manual/jmx.xml.vm                 | 172 ++++
 src/site/xdoc/manual/layouts.xml.vm             |  56 +-
 src/site/xdoc/manual/logsep.xml                 |   2 +-
 src/site/xdoc/manual/lookups.xml                |   9 +-
 src/site/xdoc/manual/messages.xml               |   4 +-
 src/site/xdoc/manual/migration.xml              |   4 +-
 src/site/xdoc/manual/plugins.xml                |  90 +-
 src/site/xdoc/manual/webapp.xml                 | 144 ++--
 383 files changed, 11840 insertions(+), 3355 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e1db6e23/log4j-core/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e1db6e23/log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java
----------------------------------------------------------------------
diff --cc log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java
index aa4fd95,0000000..4a544e4
mode 100644,000000..100644
--- a/log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java
+++ b/log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueAppender.java
@@@ -1,111 -1,0 +1,113 @@@
 +/*
 + * 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.mom.jms.appender;
 +
 +import java.io.Serializable;
 +
 +import org.apache.logging.log4j.core.Filter;
 +import org.apache.logging.log4j.core.Layout;
 +import org.apache.logging.log4j.core.LogEvent;
 +import org.apache.logging.log4j.core.appender.AbstractAppender;
 +import org.apache.logging.log4j.core.appender.AppenderLoggingException;
 +import org.apache.logging.log4j.core.config.plugins.Plugin;
 +import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 +import org.apache.logging.log4j.core.config.plugins.PluginElement;
 +import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 +import org.apache.logging.log4j.core.layout.SerializedLayout;
 +import org.apache.logging.log4j.mom.jms.manager.JmsQueueManager;
 +import org.apache.logging.log4j.core.util.Booleans;
 +
 +/**
 + * Appender to write to a JMS Queue.
 + */
 +@Plugin(name = "JMSQueue", category = "Core", elementType = "appender", printObject = true)
 +public final class JmsQueueAppender extends AbstractAppender {
 +
++    private static final long serialVersionUID = 1L;
++
 +    private final JmsQueueManager manager;
 +
 +    private JmsQueueAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout,
 +                             final JmsQueueManager manager, final boolean ignoreExceptions) {
 +        super(name, filter, layout, ignoreExceptions);
 +        this.manager = manager;
 +    }
 +
 +    /**
 +     * Actual writing occurs here.
 +     * 
 +     * @param event The LogEvent.
 +     */
 +    @Override
 +    public void append(final LogEvent event) {
 +        try {
 +            manager.send(getLayout().toSerializable(event));
 +        } catch (final Exception ex) {
 +            throw new AppenderLoggingException(ex);
 +        }
 +    }
 +
 +    /**
 +     * Create a JmsQueueAppender.
 +     * @param name The name of the Appender.
 +     * @param factoryName The fully qualified class name of the InitialContextFactory.
 +     * @param providerURL The URL of the provider to use.
 +     * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
 +     * will create a URL context factory
 +     * @param securityPrincipalName The name of the identity of the Principal.
 +     * @param securityCredentials The security credentials of the Principal.
 +     * @param factoryBindingName The name to locate in the Context that provides the QueueConnectionFactory.
 +     * @param queueBindingName The name to use to locate the Queue.
 +     * @param userName The user ID to use to create the Queue Connection.
 +     * @param password The password to use to create the Queue Connection.
 +     * @param layout The layout to use (defaults to SerializedLayout).
 +     * @param filter The Filter or null.
 +     * @param ignore If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise
 +     *               they are propagated to the caller.
 +     * @return The JmsQueueAppender.
 +     */
 +    @PluginFactory
 +    public static JmsQueueAppender createAppender(
 +            @PluginAttribute("name") final String name,
 +            @PluginAttribute("factoryName") final String factoryName,
 +            @PluginAttribute("providerURL") final String providerURL,
 +            @PluginAttribute("urlPkgPrefixes") final String urlPkgPrefixes,
 +            @PluginAttribute("securityPrincipalName") final String securityPrincipalName,
 +            @PluginAttribute("securityCredentials") final String securityCredentials,
 +            @PluginAttribute("factoryBindingName") final String factoryBindingName,
 +            @PluginAttribute("queueBindingName") final String queueBindingName,
 +            @PluginAttribute("userName") final String userName,
 +            @PluginAttribute("password") final String password,
 +            @PluginElement("Layout") Layout<? extends Serializable> layout,
 +            @PluginElement("Filter") final Filter filter,
 +            @PluginAttribute("ignoreExceptions") final String ignore) {
 +        if (name == null) {
 +            LOGGER.error("No name provided for JmsQueueAppender");
 +            return null;
 +        }
 +        final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
 +        final JmsQueueManager manager = JmsQueueManager.getJmsQueueManager(factoryName, providerURL, urlPkgPrefixes,
 +            securityPrincipalName, securityCredentials, factoryBindingName, queueBindingName, userName, password);
 +        if (manager == null) {
 +            return null;
 +        }
 +        if (layout == null) {
 +            layout = SerializedLayout.createLayout();
 +        }
 +        return new JmsQueueAppender(name, filter, layout, manager, ignoreExceptions);
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e1db6e23/log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java
----------------------------------------------------------------------
diff --cc log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java
index 6b1e16f,0000000..1b000ce
mode 100644,000000..100644
--- a/log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java
+++ b/log4j-mom/src/main/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicAppender.java
@@@ -1,112 -1,0 +1,114 @@@
 +/*
 + * 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.mom.jms.appender;
 +
 +import java.io.Serializable;
 +
 +import org.apache.logging.log4j.core.Filter;
 +import org.apache.logging.log4j.core.Layout;
 +import org.apache.logging.log4j.core.LogEvent;
 +import org.apache.logging.log4j.core.appender.AbstractAppender;
 +import org.apache.logging.log4j.core.appender.AppenderLoggingException;
 +import org.apache.logging.log4j.core.config.plugins.Plugin;
 +import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 +import org.apache.logging.log4j.core.config.plugins.PluginElement;
 +import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 +import org.apache.logging.log4j.core.layout.SerializedLayout;
 +import org.apache.logging.log4j.mom.jms.manager.JmsTopicManager;
 +import org.apache.logging.log4j.core.util.Booleans;
 +
 +/**
 + * Appender to write to a JMS Topic.
 + */
 +@Plugin(name = "JMSTopic", category = "Core", elementType = "appender", printObject = true)
 +public final class JmsTopicAppender extends AbstractAppender {
 +
++    private static final long serialVersionUID = 1L;
++
 +    private final JmsTopicManager manager;
 +
 +    private JmsTopicAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout,
 +                             final JmsTopicManager manager, final boolean ignoreExceptions) {
 +        super(name, filter, layout, ignoreExceptions);
 +        this.manager = manager;
 +    }
 +
 +    /**
 +     * Actual writing occurs here.
 +     * <p/>
 +     * @param event The LogEvent.
 +     */
 +    @Override
 +    public void append(final LogEvent event) {
 +        try {
 +            manager.send(getLayout().toSerializable(event));
 +        } catch (final Exception ex) {
 +            throw new AppenderLoggingException(ex);
 +        }
 +    }
 +
 +    /**
 +     * Create a JmsTopicAppender.
 +     * @param name The name of the Appender.
 +     * @param factoryName The fully qualified class name of the InitialContextFactory.
 +     * @param providerURL The URL of the provider to use.
 +     * @param urlPkgPrefixes A colon-separated list of package prefixes for the class name of the factory class that
 +     * will create a URL context factory
 +     * @param securityPrincipalName The name of the identity of the Principal.
 +     * @param securityCredentials The security credentials of the Principal.
 +     * @param factoryBindingName The name to locate in the Context that provides the TopicConnectionFactory.
 +     * @param topicBindingName The name to use to locate the Topic.
 +     * @param userName The userid to use to create the Topic Connection.
 +     * @param password The password to use to create the Topic Connection.
 +     * @param layout The layout to use (defaults to SerializedLayout).
 +     * @param filter The Filter or null.
 +     * @param ignore If {@code "true"} (default) exceptions encountered when appending events are logged; otherwise
 +     *               they are propagated to the caller.
 +     * @return The JmsTopicAppender.
 +     */
 +    @PluginFactory
 +    public static JmsTopicAppender createAppender(
 +            @PluginAttribute("name") final String name,
 +            @PluginAttribute("factoryName") final String factoryName,
 +            @PluginAttribute("providerURL") final String providerURL,
 +            @PluginAttribute("urlPkgPrefixes") final String urlPkgPrefixes,
 +            @PluginAttribute("securityPrincipalName") final String securityPrincipalName,
 +            @PluginAttribute("securityCredentials") final String securityCredentials,
 +            @PluginAttribute("factoryBindingName") final String factoryBindingName,
 +            @PluginAttribute("topicBindingName") final String topicBindingName,
 +            @PluginAttribute("userName") final String userName,
 +            @PluginAttribute("password") final String password,
 +            @PluginElement("Layout") Layout<? extends Serializable> layout,
-             @PluginElement("Filters") final Filter filter,
++            @PluginElement("Filter") final Filter filter,
 +            @PluginAttribute("ignoreExceptions") final String ignore) {
 +
 +        if (name == null) {
 +            LOGGER.error("No name provided for JmsQueueAppender");
 +            return null;
 +        }
 +        final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
 +        final JmsTopicManager manager = JmsTopicManager.getJmsTopicManager(factoryName, providerURL, urlPkgPrefixes,
 +            securityPrincipalName, securityCredentials, factoryBindingName, topicBindingName, userName, password);
 +        if (manager == null) {
 +            return null;
 +        }
 +        if (layout == null) {
 +            layout = SerializedLayout.createLayout();
 +        }
 +        return new JmsTopicAppender(name, filter, layout, manager, ignoreExceptions);
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e1db6e23/log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueTest.java
----------------------------------------------------------------------
diff --cc log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueTest.java
index 7a61efa,0000000..a36e148
mode 100644,000000..100644
--- a/log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueTest.java
+++ b/log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsQueueTest.java
@@@ -1,144 -1,0 +1,147 @@@
 +/*
 + * 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.mom.jms.appender;
 +
 +import java.util.List;
 +import java.util.Map;
 +
 +import javax.naming.Context;
 +import javax.naming.InitialContext;
 +
 +import org.apache.logging.log4j.Level;
 +import org.apache.logging.log4j.LogManager;
 +import org.apache.logging.log4j.core.Appender;
 +import org.apache.logging.log4j.core.Filter;
 +import org.apache.logging.log4j.core.LogEvent;
 +import org.apache.logging.log4j.core.Logger;
 +import org.apache.logging.log4j.core.LoggerContext;
 +import org.apache.logging.log4j.core.appender.ConsoleAppender;
 +import org.apache.logging.log4j.core.filter.AbstractFilter;
 +import org.apache.logging.log4j.core.filter.CompositeFilter;
 +import org.apache.logging.log4j.core.layout.PatternLayout;
 +import org.apache.logging.log4j.mom.jms.receiver.AbstractJmsReceiver;
 +import org.apache.logging.log4j.mom.jms.receiver.JmsQueueReceiver;
 +import org.apache.logging.log4j.mom.jms.receiver.JmsTopicReceiver;
 +import org.apache.logging.log4j.status.StatusConsoleListener;
 +import org.apache.logging.log4j.status.StatusLogger;
 +import org.apache.logging.log4j.test.appender.ListAppender;
 +import org.junit.After;
 +import org.junit.AfterClass;
 +import org.junit.BeforeClass;
 +import org.junit.Test;
 +import org.mockejb.jms.MockQueue;
 +import org.mockejb.jms.QueueConnectionFactoryImpl;
 +import org.mockejb.jndi.MockContextFactory;
 +
 +import static org.junit.Assert.*;
 +
 +/**
 + *
 + */
 +public class JmsQueueTest {
 +
 +    private static final String FACTORY_NAME = "TestQueueConnectionFactory";
 +    private static final String QUEUE_NAME = "TestQueue";
 +
 +    private static Context context;
 +    private static AbstractJmsReceiver receiver;
 +
 +    LoggerContext ctx = (LoggerContext) LogManager.getContext();
 +    Logger root = ctx.getLogger("JmsQueueTest");
 +
 +    @BeforeClass
 +    public static void setupClass() throws Exception {
 +        // MockContextFactory becomes the primary JNDI provider
 +        final StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);
 +        StatusLogger.getLogger().registerListener(listener);
 +        MockContextFactory.setAsInitial();
 +        context = new InitialContext();
 +        context.rebind(FACTORY_NAME, new QueueConnectionFactoryImpl());
 +        context.rebind(QUEUE_NAME, new MockQueue(QUEUE_NAME));
 +        ((LoggerContext) LogManager.getContext()).reconfigure();
 +        receiver = new JmsQueueReceiver(FACTORY_NAME, QUEUE_NAME, null, null);
 +    }
 +
 +    @AfterClass
 +    public static void cleanupClass() {
 +        StatusLogger.getLogger().reset();
 +    }
 +
 +    @After
 +    public void teardown() {
 +        final Map<String,Appender> map = root.getAppenders();
 +        for (final Map.Entry<String, Appender> entry : map.entrySet()) {
 +            final Appender app = entry.getValue();
 +            root.removeAppender(app);
 +            app.stop();
 +        }
 +    }
 +
 +    @Test
 +    public void testServer() throws Exception {
 +        final Filter clientFilter = new MessageFilter(Filter.Result.NEUTRAL, Filter.Result.DENY);
 +        final Filter serverFilter = new MessageFilter(Filter.Result.DENY, Filter.Result.NEUTRAL);
 +        final CompositeFilter clientFilters = CompositeFilter.createFilters(new Filter[]{clientFilter});
 +        final JmsQueueAppender appender = JmsQueueAppender.createAppender("Test", null, null, null, null, null, FACTORY_NAME,
 +                QUEUE_NAME, null, null, null, clientFilters, "true");
 +        appender.start();
 +        final CompositeFilter serverFilters = CompositeFilter.createFilters(new Filter[]{serverFilter});
 +        final ListAppender listApp = new ListAppender("Events", serverFilters, null, false, false);
 +        listApp.start();
 +        final PatternLayout layout = PatternLayout.newBuilder().withPattern("%m %ex%n").build();
 +        final ConsoleAppender console = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
 +        console.start();
 +        final Logger serverLogger = ctx.getLogger(JmsTopicReceiver.class.getName());
 +        serverLogger.addAppender(console);
 +        serverLogger.setAdditive(false);
 +
 +
 +        // set appender on root and set level to debug
 +        root.addAppender(listApp);
 +        root.addAppender(appender);
 +        root.setAdditive(false);
 +        root.setLevel(Level.DEBUG);
 +        root.debug("This is a test message");
 +        Thread.sleep(100);
 +        final List<LogEvent> events = listApp.getEvents();
 +        assertNotNull("No event retrieved", events);
 +        assertTrue("No events retrieved", events.size() > 0);
 +        assertTrue("Incorrect event", events.get(0).getMessage().getFormattedMessage().equals("This is a test message"));
 +    }
 +
 +    private class MessageFilter extends AbstractFilter {
++        
++        private static final long serialVersionUID = 1L;
++
 +        public MessageFilter(final Result onMatch, final Result onMismatch) {
 +            super(onMatch, onMismatch);
 +        }
 +
 +        @Override
 +        public Result filter(final LogEvent event) {
 +            final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
 +            for (final StackTraceElement element : stackTrace) {
 +                if (element.getMethodName().equals("onMessage")) {
 +                    return onMatch;
 +                } else if (element.getMethodName().equals("testServer")) {
 +                    return onMismatch;
 +                }
 +            }
 +            return onMismatch;
 +        }
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e1db6e23/log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicTest.java
----------------------------------------------------------------------
diff --cc log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicTest.java
index 6781b75,0000000..890f929
mode 100644,000000..100644
--- a/log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicTest.java
+++ b/log4j-mom/src/test/java/org/apache/logging/log4j/mom/jms/appender/JmsTopicTest.java
@@@ -1,144 -1,0 +1,147 @@@
 +/*
 + * 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.mom.jms.appender;
 +
 +import java.util.List;
 +import java.util.Map;
 +
 +import javax.naming.Context;
 +import javax.naming.InitialContext;
 +
 +import org.apache.logging.log4j.Level;
 +import org.apache.logging.log4j.LogManager;
 +import org.apache.logging.log4j.core.Appender;
 +import org.apache.logging.log4j.core.Filter;
 +import org.apache.logging.log4j.core.LogEvent;
 +import org.apache.logging.log4j.core.Logger;
 +import org.apache.logging.log4j.core.LoggerContext;
 +import org.apache.logging.log4j.core.appender.ConsoleAppender;
 +import org.apache.logging.log4j.core.filter.AbstractFilter;
 +import org.apache.logging.log4j.core.filter.CompositeFilter;
 +import org.apache.logging.log4j.core.layout.PatternLayout;
 +import org.apache.logging.log4j.mom.jms.receiver.AbstractJmsReceiver;
 +import org.apache.logging.log4j.mom.jms.receiver.JmsTopicReceiver;
 +import org.apache.logging.log4j.status.StatusConsoleListener;
 +import org.apache.logging.log4j.status.StatusLogger;
 +import org.apache.logging.log4j.test.appender.ListAppender;
 +import org.junit.After;
 +import org.junit.AfterClass;
 +import org.junit.BeforeClass;
 +import org.junit.Test;
 +import org.mockejb.jms.MockTopic;
 +import org.mockejb.jms.TopicConnectionFactoryImpl;
 +import org.mockejb.jndi.MockContextFactory;
 +
 +import static org.junit.Assert.*;
 +
 +/**
 + *
 + */
 +public class JmsTopicTest {
 +
 +    private static final String FACTORY_NAME = "TestTopicConnectionFactory";
 +    private static final String TOPIC_NAME = "TestTopic";
 +
 +    private static Context context;
 +    private static AbstractJmsReceiver receiver;
 +
 +    LoggerContext ctx = (LoggerContext) LogManager.getContext();
 +    Logger root = ctx.getLogger("JmsTopicTest");
 +
 +    @BeforeClass
 +    public static void setupClass() throws Exception {
 +        // MockContextFactory becomes the primary JNDI provider
 +        final StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);
 +        StatusLogger.getLogger().registerListener(listener);
 +        MockContextFactory.setAsInitial();
 +        context = new InitialContext();
 +        context.rebind(FACTORY_NAME, new TopicConnectionFactoryImpl());
 +        context.rebind(TOPIC_NAME, new MockTopic(TOPIC_NAME));
 +        ((LoggerContext) LogManager.getContext()).reconfigure();
 +        receiver = new JmsTopicReceiver(FACTORY_NAME, TOPIC_NAME, null, null);
 +    }
 +
 +    @AfterClass
 +    public static void cleanupClass() {
 +        StatusLogger.getLogger().reset();
 +    }
 +
 +    @After
 +    public void teardown() {
 +        final Map<String,Appender> map = root.getAppenders();
 +        for (final Map.Entry<String, Appender> entry : map.entrySet()) {
 +            final Appender app = entry.getValue();
 +            root.removeAppender(app);
 +            app.stop();
 +        }
 +    }
 +
 +    @Test
 +    public void testServer() throws Exception {
 +        final Filter clientFilter = new MessageFilter(Filter.Result.NEUTRAL, Filter.Result.DENY);
 +        final Filter serverFilter = new MessageFilter(Filter.Result.DENY, Filter.Result.NEUTRAL);
 +        final CompositeFilter clientFilters = CompositeFilter.createFilters(new Filter[]{clientFilter});
 +        final JmsTopicAppender appender = JmsTopicAppender.createAppender("Test", null, null, null, null, null, FACTORY_NAME,
 +                TOPIC_NAME, null, null, null, clientFilters, "true");
 +        appender.start();
 +        final CompositeFilter serverFilters = CompositeFilter.createFilters(new Filter[]{serverFilter});
 +        final ListAppender listApp = new ListAppender("Events", serverFilters, null, false, false);
 +        listApp.start();
 +        final PatternLayout layout = PatternLayout.newBuilder().withPattern("%m %ex%n").build();
 +        final ConsoleAppender console =
 +                ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
 +        console.start();
 +        final Logger serverLogger = ctx.getLogger(JmsTopicReceiver.class.getName());
 +        serverLogger.addAppender(console);
 +        serverLogger.setAdditive(false);
 +
 +
 +        // set appender on root and set level to debug
 +        root.addAppender(listApp);
 +        root.addAppender(appender);
 +        root.setAdditive(false);
 +        root.setLevel(Level.DEBUG);
 +        root.debug("This is a test message");
 +        Thread.sleep(100);
 +        final List<LogEvent> events = listApp.getEvents();
 +        assertNotNull("No event retrieved", events);
 +        assertTrue("No events retrieved", events.size() > 0);
 +        assertTrue("Incorrect event", events.get(0).getMessage().getFormattedMessage().equals("This is a test message"));
 +    }
 +
 +    private class MessageFilter extends AbstractFilter {
++        
++        private static final long serialVersionUID = 1L;
++
 +        public MessageFilter(final Result onMatch, final Result onMismatch) {
 +            super(onMatch, onMismatch);
 +        }
 +
 +        @Override
 +        public Result filter(final LogEvent event) {
 +            final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
 +            for (final StackTraceElement element : stackTrace) {
 +                if (element.getMethodName().equals("onMessage")) {
 +                    return onMatch;
 +                } else if (element.getMethodName().equals("testServer")) {
 +                    return onMismatch;
 +                }
 +            }
 +            return onMismatch;
 +        }
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e1db6e23/pom.xml
----------------------------------------------------------------------
diff --cc pom.xml
index d045e7b,29b05af..2d0b1e5
--- a/pom.xml
+++ b/pom.xml
@@@ -153,22 -154,15 +154,22 @@@
      <slf4j.version>1.7.7</slf4j.version>
      <logback.version>1.0.13</logback.version>
      <log4jParentDir>${basedir}</log4jParentDir>
-     <Log4jReleaseVersion>2.0-rc2</Log4jReleaseVersion>
-     <Log4jReleaseCount>thirteenth</Log4jReleaseCount>
+     <Log4jReleaseVersion>2.0.2</Log4jReleaseVersion>
+     <Log4jReleaseCount>sixteenth</Log4jReleaseCount>
      <jackson1.version>1.9.13</jackson1.version>
-     <jackson2.version>2.4.1</jackson2.version>
+     <jackson2.version>2.4.2</jackson2.version>
      <spring.version>3.2.8.RELEASE</spring.version>
 -    <flumeVersion>1.5.0.1</flumeVersion>
 -    <disruptor.version>3.3.0</disruptor.version>
 -    <pmd.plugin.version>3.2</pmd.plugin.version>
 -    <findbugs.plugin.version>2.5.5</findbugs.plugin.version>
 +    <flumeVersion>1.5.0</flumeVersion>
 +    <disruptor.version>3.2.1</disruptor.version>
 +    <activemq.version>5.10.0</activemq.version>
 +    <!-- Configuration properties for the OSGi maven-bundle-plugin -->
 +    <project.version.osgi>2.0.0.RC2-SNAPSHOT</project.version.osgi>
 +    <osgi.symbolicName>org.apache.logging.${project.artifactId}</osgi.symbolicName>
 +    <osgi.export>org.apache.logging.log4j.*;version=${project.version};-noimport:=true</osgi.export>
 +    <osgi.import>*</osgi.import>
 +    <osgi.dynamicImport />
 +    <osgi.private />
 +    <pmd.plugin.version>3.1</pmd.plugin.version>
      <changes.plugin.version>2.9</changes.plugin.version>
      <javadoc.plugin.version>2.9.1</javadoc.plugin.version>
      <surefire.plugin.version>2.17</surefire.plugin.version>
@@@ -1000,7 -994,7 +1011,8 @@@
      <module>log4j-nosql</module>
      <module>log4j-web</module>
      <module>log4j-perf</module>
 +    <module>log4j-mom</module>
+     <module>log4j-streams</module>
    </modules>
    <profiles>
      <profile>