This is an automated email from the ASF dual-hosted git repository. mattsicker pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit e2d2ad13b9664f122c1b76bbfc22f73b120f3b41 Merge: 3118f47997 945cb7fecb Author: Matt Sicker <[email protected]> AuthorDate: Wed Nov 15 19:08:03 2023 -0600 Merge branch 'main' into the-great-deletion .../builders/appender/SyslogAppenderBuilder.java | 1 + .../log4j/builders/layout/HtmlLayoutBuilder.java | 2 + .../log4j/builders/layout/XmlLayoutBuilder.java | 3 +- .../apache/log4j/layout/Log4j1SyslogLayout.java | 58 +++-- .../org/apache/log4j/layout/Log4j1XmlLayout.java | 35 ++- .../log4j/layout/Log4j1SyslogLayoutTest.java | 4 + .../apache/log4j/layout/Log4j1XmlLayoutTest.java | 5 +- .../log4j/message/ReusableMessageFactoryTest.java | 32 +-- .../logging/log4j/spi/RecyclerFactoriesTest.java | 114 +++++++++ .../log4j/spi/ThreadLocalRecyclerFactoryTest.java | 100 ++++++++ .../log4j}/util/StringParameterParserTest.java | 52 ++-- .../org/apache/logging/log4j/util/StringsTest.java | 9 - log4j-api/pom.xml | 7 + .../logging/log4j/internal/DefaultLogBuilder.java | 87 +++---- .../logging/log4j/message/MessageFactory.java | 13 + .../log4j/message/ParameterizedMessage.java | 32 ++- .../log4j/message/ReusableMessageFactory.java | 94 ++++---- .../message/ReusableParameterizedMessage.java | 57 ++--- .../apache/logging/log4j/spi/AbstractLogger.java | 75 +++--- .../apache/logging/log4j/spi/AbstractRecycler.java | 20 +- .../logging/log4j/spi}/DummyRecyclerFactory.java | 30 ++- .../apache/logging/log4j/spi/LoggingSystem.java | 9 + .../logging/log4j/spi/QueueingRecyclerFactory.java | 82 +++++++ .../org/apache/logging/log4j/spi/Recycler.java | 34 ++- .../apache/logging/log4j/spi/RecyclerAware.java | 13 +- .../logging/log4j/spi/RecyclerFactories.java | 131 ++++++++++ .../apache/logging/log4j/spi/RecyclerFactory.java | 59 +++++ .../log4j/spi/ThreadLocalRecyclerFactory.java | 104 ++++++++ .../apache/logging/log4j/status/StatusLogger.java | 58 +---- .../apache/logging/log4j/util/QueueFactories.java | 234 ++++++++++++++++++ .../apache/logging/log4j/util/QueueFactory.java | 19 +- .../logging/log4j}/util/StringParameterParser.java | 17 +- .../org/apache/logging/log4j/util/Strings.java | 85 ++----- .../appender/SyslogAppenderCustomLayoutTest.java | 2 + .../log4j/core/appender/SyslogAppenderTest.java | 2 + .../log4j/core/async/RingBufferLogEventTest.java | 4 +- .../log4j/core/async/perftest/RunConversant.java | 2 +- .../log4j/core/async/perftest/RunJCTools.java | 2 +- .../logging/log4j/core/config/FileOutputTest.java | 3 + .../core/impl/ReusableLogEventFactoryTest.java | 56 ++--- .../core/layout/AbstractStringLayoutTest.java | 75 +++--- .../logging/log4j/core/layout/GelfLayoutTest.java | 6 +- .../logging/log4j/core/layout/HtmlLayoutTest.java | 19 +- .../log4j/core/layout/Rfc5424LayoutTest.java | 111 ++++----- .../core/layout/SpyByteBufferDestination.java | 4 +- .../log4j/core/layout/SyslogLayoutTest.java | 2 + .../logging/log4j/core/ReusableLogEvent.java | 71 ++++++ .../logging/log4j/core/appender/AsyncAppender.java | 10 +- .../log4j/core/appender/OutputStreamManager.java | 28 +-- .../log4j/core/appender/SyslogAppender.java | 3 + .../core/async/ArrayBlockingQueueFactory.java | 8 +- .../core/async/AsyncLoggerConfigDisruptor.java | 5 +- .../log4j/core/async/BlockingQueueFactory.java | 4 +- .../core/async/DisruptorBlockingQueueFactory.java | 8 +- .../core/async/JCToolsBlockingQueueFactory.java | 8 +- .../core/async/LinkedTransferQueueFactory.java | 8 +- .../log4j/core/async/RingBufferLogEvent.java | 83 ++++++- .../logging/log4j/core/config/Configuration.java | 11 + .../logging/log4j/core/config/LoggerConfig.java | 8 +- .../logging/log4j/core/impl/DefaultBundle.java | 13 +- .../logging/log4j/core/impl/Log4jLogEvent.java | 10 +- .../logging/log4j/core/impl/LogEventFactory.java | 2 + .../logging/log4j/core/impl/MutableLogEvent.java | 43 ++-- .../log4j/core/impl/ReusableLogEventFactory.java | 56 ++--- .../logging/log4j/core/layout/AbstractLayout.java | 83 +++++-- .../log4j/core/layout/AbstractStringLayout.java | 144 +++++------ .../log4j/core/layout/ByteBufferDestination.java | 67 ------ .../core/layout/ByteBufferDestinationHelper.java | 73 ++++++ .../logging/log4j/core/layout/GelfLayout.java | 140 ++++++----- .../logging/log4j/core/layout/HtmlLayout.java | 264 ++++++++++++--------- .../core/layout/LockingStringBuilderEncoder.java | 16 +- .../logging/log4j/core/layout/PatternLayout.java | 73 +++--- .../logging/log4j/core/layout/Rfc5424Layout.java | 44 ++-- .../log4j/core/layout/StringBuilderEncoder.java | 81 +++---- .../logging/log4j/core/layout/SyslogLayout.java | 52 ++-- .../log4j/core/layout/TextEncoderHelper.java | 68 +++--- .../logging/log4j/core/net/TcpSocketManager.java | 7 +- .../log4j/core/pattern/RepeatPatternConverter.java | 3 +- .../apache/logging/log4j/core/util/JsonUtils.java | 75 +++--- .../log4j/csv/layout/CsvLogEventLayout.java | 9 +- .../log4j/csv/layout/CsvParameterLayout.java | 9 +- .../log4j/csv/layout/CsvLogEventLayoutTest.java | 2 +- .../log4j/csv/layout/CsvParameterLayoutTest.java | 3 +- .../log4j/flume/appender/FlumeAppender.java | 2 + .../log4j/smtp/appender/SmtpAppenderTest.java | 2 + .../log4j/smtp/appender/SmtpManagerTest.java | 3 +- .../log4j/jackson/json/layout/JsonLayoutTest.java | 37 +-- .../log4j/jackson/xml/layout/XmlLayout.java | 3 +- .../log4j/jackson/xml/layout/XmlLayoutTest.java | 136 +++++------ .../log4j/jackson/yaml/layout/YamlLayoutTest.java | 5 + .../JsonTemplateLayoutConcurrentEncodeTest.java | 3 +- .../template/json/JsonTemplateLayoutTest.java | 35 +-- .../log4j/layout/template/json/LogstashIT.java | 2 - .../json/ThreadLocalRecyclerNestedLoggingTest.java | 4 +- .../layout/template/json/util/JsonWriterTest.java | 39 ++- .../template/json/util/RecyclerFactoriesTest.java | 139 ----------- .../layout/template/json/JsonTemplateLayout.java | 93 +------- .../template/json/JsonTemplateLayoutDefaults.java | 8 - .../template/json/resolver/CounterResolver.java | 3 +- .../json/resolver/EventResolverContext.java | 16 -- .../json/resolver/MessageParameterResolver.java | 3 +- .../json/resolver/ReadOnlyStringMapResolver.java | 6 +- .../json/resolver/StackTraceStringResolver.java | 8 +- .../template/json/util/QueueingRecycler.java | 61 ----- .../json/util/QueueingRecyclerFactory.java | 40 ---- .../template/json/util/RecyclerFactories.java | 197 --------------- .../template/json/util/ThreadLocalRecycler.java | 45 ---- .../json/util/ThreadLocalRecyclerFactory.java | 40 ---- .../json/BlackHoleByteBufferDestination.java | 5 +- .../json/JsonTemplateLayoutBenchmarkReport.java | 3 +- .../json/JsonTemplateLayoutBenchmarkState.java | 4 - ...bstractStringLayoutStringEncodingBenchmark.java | 36 ++- .../log4j/perf/jmh/TextEncoderHelperBenchmark.java | 5 +- .../logging/log4j/perf/nogc/DemoAppender.java | 5 +- .../logging/log4j/perf/util/DemoAppender.java | 5 +- .../plugins/convert/TypeConverterFactory.java | 3 + .../log4j/smtp/appender/SmtpAppenderTest.java | 2 + .../log4j/smtp/appender/SmtpManagerTest.java | 3 +- .../java/org/apache/logging/slf4j/SLF4JLogger.java | 15 +- .../log4j/web/Log4jServletContextListener.java | 64 +++-- .../logging/log4j/web/Log4jServletFilter.java | 2 + .../log4j/web/ServletRequestThreadContext.java | 45 ++++ .../log4j/web/Log4jServletContextListenerTest.java | 88 ++++--- .../logging/log4j/web/Log4jServletFilterTest.java | 1 + ...w_multiple_servletcontextlistener_instances.xml | 28 +++ 125 files changed, 2691 insertions(+), 2108 deletions(-) diff --cc log4j-api/pom.xml index a48e0e5338,835f836db6..42c057471a --- a/log4j-api/pom.xml +++ b/log4j-api/pom.xml @@@ -44,4 -44,21 +44,11 @@@ </bnd-extra-module-options> </properties> + <dependencies> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.framework</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.resource</artifactId> - <scope>provided</scope> - </dependency> + <dependency> + <groupId>org.jctools</groupId> + <artifactId>jctools-core</artifactId> + <optional>true</optional> + </dependency> + </dependencies> </project> diff --cc log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystem.java index 55dbf3ecc3,2bfa9debb6..7ce79e87ad --- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystem.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystem.java @@@ -104,8 -102,27 +104,9 @@@ public class LoggingSystem () -> getProvider().createContextMap(environment)); private final Lazy<Supplier<ThreadContextStack>> threadContextStackFactoryLazy = environmentLazy.map(environment -> () -> getProvider().createContextStack(environment)); + private final Lazy<RecyclerFactory> recyclerFactoryLazy = Lazy.relaxed(RecyclerFactories::getDefault); - /** - * Acquires a lock on the initialization of locating a logging system provider. This lock should be - * {@linkplain #releaseInitializationLock() released} once the logging system provider is loaded. This lock is - * provided to allow for lazy initialization via frameworks like OSGi to wait for a provider to be installed - * before allowing initialization to continue. - * - * @see <a href="https://issues.apache.org/jira/browse/LOG4J2-373">LOG4J2-373</a> - */ - @InternalApi - public void acquireInitializationLock() { - initializationLock.lock(); - } - - /** - * Releases a lock on the initialization phase of this logging system. - */ - @InternalApi - public void releaseInitializationLock() { - initializationLock.unlock(); + public LoggingSystem() { } private SystemProvider getProvider() { @@@ -186,10 -223,13 +191,14 @@@ return getInstance().threadContextStackFactoryLazy.value().get(); } + public static RecyclerFactory getRecyclerFactory() { + return getInstance().recyclerFactoryLazy.value(); + } + private static List<Provider> loadDefaultProviders() { - return ServiceRegistry.getInstance() - .getServices(Provider.class, MethodHandles.lookup(), provider -> validVersion(provider.getVersions())); + return ServiceLoaderUtil.safeStream(ServiceLoader.load(Provider.class, Provider.class.getClassLoader())) + .filter(provider -> validVersion(provider.getVersions())) + .collect(Collectors.toList()); } private static List<Provider> loadLegacyProviders() {
