You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gi...@apache.org on 2024/09/22 09:14:03 UTC
(logging-log4j2) branch release/2.24.1-site-stg-out updated: Add website content generated from `35b8e024734dadfb69f50e04ad288814ed70f6ca`
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch release/2.24.1-site-stg-out
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/release/2.24.1-site-stg-out by this push:
new 5422fc6f26 Add website content generated from `35b8e024734dadfb69f50e04ad288814ed70f6ca`
5422fc6f26 is described below
commit 5422fc6f26773e331906415ef90b5df6d07d36aa
Author: ASF Logging Services RM <pr...@logging.apache.org>
AuthorDate: Sun Sep 22 09:13:50 2024 +0000
Add website content generated from `35b8e024734dadfb69f50e04ad288814ed70f6ca`
---
.htaccess | 76 +
404.html | 119 +
README.txt | 1 -
_/css/site.css | 3 +
_/css/vendor/tabs.css | 110 +
_/font/roboto-cyrillic-400-italic.woff2 | Bin 0 -> 10292 bytes
_/font/roboto-cyrillic-400-normal.woff2 | Bin 0 -> 9628 bytes
_/font/roboto-cyrillic-500-italic.woff2 | Bin 0 -> 10640 bytes
_/font/roboto-cyrillic-500-normal.woff2 | Bin 0 -> 9840 bytes
_/font/roboto-latin-400-italic.woff | Bin 0 -> 22048 bytes
_/font/roboto-latin-400-italic.woff2 | Bin 0 -> 17368 bytes
_/font/roboto-latin-400-normal.woff | Bin 0 -> 20344 bytes
_/font/roboto-latin-400-normal.woff2 | Bin 0 -> 15744 bytes
_/font/roboto-latin-500-italic.woff | Bin 0 -> 22092 bytes
_/font/roboto-latin-500-italic.woff2 | Bin 0 -> 17336 bytes
_/font/roboto-latin-500-normal.woff | Bin 0 -> 20544 bytes
_/font/roboto-latin-500-normal.woff2 | Bin 0 -> 15920 bytes
_/font/roboto-mono-latin-400-normal.woff | Bin 0 -> 15160 bytes
_/font/roboto-mono-latin-400-normal.woff2 | Bin 0 -> 12312 bytes
_/font/roboto-mono-latin-500-normal.woff | Bin 0 -> 15364 bytes
_/font/roboto-mono-latin-500-normal.woff2 | Bin 0 -> 12532 bytes
_/img/back.svg | 1 +
_/img/caret.svg | 1 +
_/img/chevron.svg | 1 +
_/img/home-o.svg | 1 +
_/img/home.svg | 1 +
_/img/menu.svg | 1 +
_/img/octicons-16.svg | 1 +
_/js/site.js | 6 +
_/js/vendor/highlight.js | 1 +
_/js/vendor/tabs.js | 127 +
_images/IntelliJ-IDEA-logo.png | Bin 0 -> 4299 bytes
_images/YourKitLogo.png | Bin 0 -> 5554 bytes
...ag-01168003b98f120d2f0736e5172de8e1218f189e.svg | 1 +
...ag-0c23746e246efa4a462049e2adc4b0349185aa77.svg | 1 +
...ag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg | 1 +
...ag-232cdf1d44336897239fa03f6521cc730f38f32d.svg | 1 +
...ag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg | 1 +
...ag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg | 1 +
...ag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg | 1 +
...ag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg | 1 +
...ag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg | 1 +
...ag-5c97f284d82478c0499cab16fe90893de781b11f.svg | 1 +
...ag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg | 1 +
...ag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg | 1 +
...ag-73365a4d8197b5441a98fd1d661b07760da178be.svg | 1 +
...ag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg | 1 +
...ag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg | 1 +
...ag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg | 1 +
...ag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg | 1 +
...ag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg | 1 +
...ag-a51b68065f249459078382aa4c61888857f01b2c.svg | 1 +
...ag-d5122741a680d765fa3170a444015b615a1fdafd.svg | 1 +
...ag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg | 1 +
_images/favicon.ico | Bin 0 -> 1490 bytes
_images/jmx-jconsole-mbeans.png | Bin 0 -> 61770 bytes
_images/logo-big-black.png | Bin 0 -> 88078 bytes
_images/logo-small-white.png | Bin 0 -> 4492 bytes
components.html | 2451 ++
development.html | 576 +
download.html | 581 +
faq.html | 854 +
hibernate.html | 606 +
index.html | 483 +
jakarta.html | 1741 ++
javadoc.html | 421 +
javadoc/log4j-api/allclasses-index.html | 667 +
javadoc/log4j-api/allpackages-index.html | 92 +
javadoc/log4j-api/constant-values.html | 300 +
javadoc/log4j-api/deprecated-list.html | 256 +
javadoc/log4j-api/element-list | 6 +
javadoc/log4j-api/help-doc.html | 201 +
javadoc/log4j-api/index-all.html | 7526 ++++++
javadoc/log4j-api/index.html | 94 +
javadoc/log4j-api/jquery-ui.overrides.css | 35 +
javadoc/log4j-api/legal/ADDITIONAL_LICENSE_INFO | 37 +
javadoc/log4j-api/legal/ASSEMBLY_EXCEPTION | 27 +
javadoc/log4j-api/legal/LICENSE | 347 +
javadoc/log4j-api/legal/jquery.md | 72 +
javadoc/log4j-api/legal/jqueryUI.md | 49 +
javadoc/log4j-api/member-search-index.js | 1 +
javadoc/log4j-api/module-search-index.js | 1 +
.../org/apache/logging/log4j/BridgeAware.html | 139 +
.../log4j/CloseableThreadContext.Instance.html | 266 +
.../logging/log4j/CloseableThreadContext.html | 262 +
.../org/apache/logging/log4j/EventLogger.html | 205 +
.../log4j-api/org/apache/logging/log4j/Level.html | 681 +
.../org/apache/logging/log4j/LogBuilder.html | 767 +
.../org/apache/logging/log4j/LogManager.html | 1045 +
.../log4j-api/org/apache/logging/log4j/Logger.html | 10386 ++++++++
.../org/apache/logging/log4j/LoggingException.html | 197 +
.../log4j-api/org/apache/logging/log4j/Marker.html | 322 +
.../logging/log4j/MarkerManager.Log4jMarker.html | 429 +
.../org/apache/logging/log4j/MarkerManager.html | 257 +
.../logging/log4j/ThreadContext.ContextStack.html | 275 +
.../org/apache/logging/log4j/ThreadContext.html | 710 +
.../logging/log4j/class-use/BridgeAware.html | 62 +
.../class-use/CloseableThreadContext.Instance.html | 140 +
.../log4j/class-use/CloseableThreadContext.html | 62 +
.../logging/log4j/class-use/EventLogger.html | 62 +
.../org/apache/logging/log4j/class-use/Level.html | 2498 ++
.../apache/logging/log4j/class-use/LogBuilder.html | 218 +
.../apache/logging/log4j/class-use/LogManager.html | 62 +
.../org/apache/logging/log4j/class-use/Logger.html | 270 +
.../logging/log4j/class-use/LoggingException.html | 62 +
.../org/apache/logging/log4j/class-use/Marker.html | 4253 ++++
.../log4j/class-use/MarkerManager.Log4jMarker.html | 62 +
.../logging/log4j/class-use/MarkerManager.html | 62 +
.../class-use/ThreadContext.ContextStack.html | 156 +
.../logging/log4j/class-use/ThreadContext.html | 62 +
.../log4j/message/AbstractMessageFactory.html | 705 +
.../log4j/message/AsynchronouslyFormattable.html | 121 +
.../log4j/message/DefaultFlowMessageFactory.html | 411 +
.../apache/logging/log4j/message/EntryMessage.html | 110 +
.../apache/logging/log4j/message/ExitMessage.html | 110 +
.../apache/logging/log4j/message/FlowMessage.html | 169 +
.../logging/log4j/message/FlowMessageFactory.html | 273 +
.../logging/log4j/message/FormattedMessage.html | 484 +
.../log4j/message/FormattedMessageFactory.html | 685 +
.../logging/log4j/message/LocalizedMessage.html | 569 +
.../log4j/message/LocalizedMessageFactory.html | 299 +
.../log4j/message/LoggerNameAwareMessage.html | 157 +
.../log4j/message/MapMessage.MapFormat.html | 284 +
.../apache/logging/log4j/message/MapMessage.html | 1192 +
.../org/apache/logging/log4j/message/Message.html | 241 +
.../log4j/message/MessageCollectionMessage.html | 114 +
.../logging/log4j/message/MessageFactory.html | 202 +
.../logging/log4j/message/MessageFactory2.html | 566 +
.../log4j/message/MessageFormatMessage.html | 323 +
.../log4j/message/MessageFormatMessageFactory.html | 684 +
.../logging/log4j/message/MultiformatMessage.html | 175 +
.../logging/log4j/message/ObjectArrayMessage.html | 294 +
.../logging/log4j/message/ObjectMessage.html | 325 +
.../logging/log4j/message/ParameterConsumer.html | 162 +
.../logging/log4j/message/ParameterVisitable.html | 160 +
.../log4j/message/ParameterizedMessage.html | 685 +
.../log4j/message/ParameterizedMessageFactory.html | 726 +
.../ParameterizedNoReferenceMessageFactory.html | 252 +
.../logging/log4j/message/ReusableMessage.html | 224 +
.../log4j/message/ReusableMessageFactory.html | 767 +
.../log4j/message/ReusableObjectMessage.html | 407 +
.../message/ReusableParameterizedMessage.html | 619 +
.../log4j/message/ReusableSimpleMessage.html | 447 +
.../logging/log4j/message/SimpleMessage.html | 379 +
.../log4j/message/SimpleMessageFactory.html | 725 +
.../log4j/message/StringFormattedMessage.html | 333 +
.../message/StringFormatterMessageFactory.html | 725 +
.../logging/log4j/message/StringMapMessage.html | 237 +
.../message/StructuredDataCollectionMessage.html | 295 +
.../logging/log4j/message/StructuredDataId.html | 618 +
.../message/StructuredDataMessage.Format.html | 224 +
.../log4j/message/StructuredDataMessage.html | 1000 +
.../ThreadDumpMessage.ThreadInfoFactory.html | 137 +
.../logging/log4j/message/ThreadDumpMessage.html | 316 +
.../logging/log4j/message/ThreadInformation.html | 156 +
.../logging/log4j/message/TimestampMessage.html | 138 +
.../message/class-use/AbstractMessageFactory.html | 128 +
.../class-use/AsynchronouslyFormattable.html | 106 +
.../class-use/DefaultFlowMessageFactory.html | 62 +
.../log4j/message/class-use/EntryMessage.html | 278 +
.../log4j/message/class-use/ExitMessage.html | 132 +
.../log4j/message/class-use/FlowMessage.html | 96 +
.../message/class-use/FlowMessageFactory.html | 163 +
.../log4j/message/class-use/FormattedMessage.html | 62 +
.../message/class-use/FormattedMessageFactory.html | 62 +
.../log4j/message/class-use/LocalizedMessage.html | 62 +
.../message/class-use/LocalizedMessageFactory.html | 62 +
.../message/class-use/LoggerNameAwareMessage.html | 92 +
.../message/class-use/MapMessage.MapFormat.html | 102 +
.../log4j/message/class-use/MapMessage.html | 107 +
.../logging/log4j/message/class-use/Message.html | 1764 ++
.../class-use/MessageCollectionMessage.html | 91 +
.../log4j/message/class-use/MessageFactory.html | 453 +
.../log4j/message/class-use/MessageFactory2.html | 160 +
.../message/class-use/MessageFormatMessage.html | 62 +
.../class-use/MessageFormatMessageFactory.html | 62 +
.../message/class-use/MultiformatMessage.html | 121 +
.../message/class-use/ObjectArrayMessage.html | 62 +
.../log4j/message/class-use/ObjectMessage.html | 62 +
.../log4j/message/class-use/ParameterConsumer.html | 105 +
.../message/class-use/ParameterVisitable.html | 101 +
.../message/class-use/ParameterizedMessage.html | 62 +
.../class-use/ParameterizedMessageFactory.html | 91 +
.../ParameterizedNoReferenceMessageFactory.html | 91 +
.../log4j/message/class-use/ReusableMessage.html | 101 +
.../message/class-use/ReusableMessageFactory.html | 91 +
.../message/class-use/ReusableObjectMessage.html | 62 +
.../class-use/ReusableParameterizedMessage.html | 175 +
.../message/class-use/ReusableSimpleMessage.html | 62 +
.../log4j/message/class-use/SimpleMessage.html | 62 +
.../message/class-use/SimpleMessageFactory.html | 91 +
.../message/class-use/StringFormattedMessage.html | 62 +
.../class-use/StringFormatterMessageFactory.html | 91 +
.../log4j/message/class-use/StringMapMessage.html | 91 +
.../class-use/StructuredDataCollectionMessage.html | 62 +
.../log4j/message/class-use/StructuredDataId.html | 200 +
.../class-use/StructuredDataMessage.Format.html | 116 +
.../message/class-use/StructuredDataMessage.html | 135 +
.../ThreadDumpMessage.ThreadInfoFactory.html | 62 +
.../log4j/message/class-use/ThreadDumpMessage.html | 62 +
.../log4j/message/class-use/ThreadInformation.html | 89 +
.../log4j/message/class-use/TimestampMessage.html | 62 +
.../logging/log4j/message/package-summary.html | 322 +
.../apache/logging/log4j/message/package-tree.html | 173 +
.../apache/logging/log4j/message/package-use.html | 337 +
.../org/apache/logging/log4j/package-summary.html | 201 +
.../org/apache/logging/log4j/package-tree.html | 119 +
.../org/apache/logging/log4j/package-use.html | 207 +
.../apache/logging/log4j/simple/SimpleLogger.html | 845 +
.../logging/log4j/simple/SimpleLoggerContext.html | 383 +
.../log4j/simple/SimpleLoggerContextFactory.html | 304 +
.../log4j/simple/class-use/SimpleLogger.html | 62 +
.../simple/class-use/SimpleLoggerContext.html | 62 +
.../class-use/SimpleLoggerContextFactory.html | 91 +
.../logging/log4j/simple/package-summary.html | 133 +
.../apache/logging/log4j/simple/package-tree.html | 82 +
.../apache/logging/log4j/simple/package-use.html | 88 +
.../apache/logging/log4j/spi/AbstractLogger.html | 13029 ++++++++++
.../logging/log4j/spi/AbstractLoggerAdapter.html | 343 +
.../log4j/spi/CleanableThreadContextMap.html | 168 +
.../org/apache/logging/log4j/spi/CopyOnWrite.html | 99 +
.../logging/log4j/spi/DefaultThreadContextMap.html | 592 +
.../log4j/spi/DefaultThreadContextStack.html | 579 +
.../apache/logging/log4j/spi/ExtendedLogger.html | 1411 ++
.../logging/log4j/spi/ExtendedLoggerWrapper.html | 840 +
.../logging/log4j/spi/LocationAwareLogger.html | 144 +
.../apache/logging/log4j/spi/LoggerAdapter.html | 161 +
.../apache/logging/log4j/spi/LoggerContext.html | 448 +
.../logging/log4j/spi/LoggerContextFactory.html | 279 +
.../apache/logging/log4j/spi/LoggerContextKey.html | 206 +
.../log4j/spi/LoggerContextShutdownAware.html | 135 +
.../log4j/spi/LoggerContextShutdownEnabled.html | 139 +
.../spi/LoggerRegistry.ConcurrentMapFactory.html | 211 +
.../log4j/spi/LoggerRegistry.MapFactory.html | 164 +
.../log4j/spi/LoggerRegistry.WeakMapFactory.html | 211 +
.../apache/logging/log4j/spi/LoggerRegistry.html | 359 +
.../logging/log4j/spi/MessageFactory2Adapter.html | 702 +
.../log4j/spi/MutableThreadContextStack.html | 608 +
.../logging/log4j/spi/NoOpThreadContextMap.html | 367 +
.../logging/log4j/spi/ObjectThreadContextMap.html | 201 +
.../org/apache/logging/log4j/spi/Provider.html | 574 +
.../log4j/spi/ReadOnlyThreadContextMap.html | 264 +
.../apache/logging/log4j/spi/StandardLevel.html | 320 +
.../org/apache/logging/log4j/spi/Terminable.html | 140 +
.../apache/logging/log4j/spi/ThreadContextMap.html | 275 +
.../logging/log4j/spi/ThreadContextMap2.html | 187 +
.../logging/log4j/spi/ThreadContextMapFactory.html | 175 +
.../logging/log4j/spi/ThreadContextStack.html | 113 +
.../log4j/spi/class-use/AbstractLogger.html | 132 +
.../log4j/spi/class-use/AbstractLoggerAdapter.html | 62 +
.../spi/class-use/CleanableThreadContextMap.html | 93 +
.../logging/log4j/spi/class-use/CopyOnWrite.html | 62 +
.../spi/class-use/DefaultThreadContextMap.html | 62 +
.../spi/class-use/DefaultThreadContextStack.html | 62 +
.../log4j/spi/class-use/ExtendedLogger.html | 251 +
.../log4j/spi/class-use/ExtendedLoggerWrapper.html | 62 +
.../log4j/spi/class-use/LocationAwareLogger.html | 137 +
.../logging/log4j/spi/class-use/LoggerAdapter.html | 92 +
.../logging/log4j/spi/class-use/LoggerContext.html | 320 +
.../log4j/spi/class-use/LoggerContextFactory.html | 169 +
.../log4j/spi/class-use/LoggerContextKey.html | 62 +
.../spi/class-use/LoggerContextShutdownAware.html | 110 +
.../class-use/LoggerContextShutdownEnabled.html | 62 +
.../LoggerRegistry.ConcurrentMapFactory.html | 62 +
.../spi/class-use/LoggerRegistry.MapFactory.html | 108 +
.../class-use/LoggerRegistry.WeakMapFactory.html | 62 +
.../log4j/spi/class-use/LoggerRegistry.html | 112 +
.../spi/class-use/MessageFactory2Adapter.html | 62 +
.../spi/class-use/MutableThreadContextStack.html | 62 +
.../log4j/spi/class-use/NoOpThreadContextMap.html | 62 +
.../spi/class-use/ObjectThreadContextMap.html | 62 +
.../logging/log4j/spi/class-use/Provider.html | 107 +
.../spi/class-use/ReadOnlyThreadContextMap.html | 93 +
.../logging/log4j/spi/class-use/StandardLevel.html | 123 +
.../logging/log4j/spi/class-use/Terminable.html | 62 +
.../log4j/spi/class-use/ThreadContextMap.html | 153 +
.../log4j/spi/class-use/ThreadContextMap2.html | 99 +
.../spi/class-use/ThreadContextMapFactory.html | 62 +
.../log4j/spi/class-use/ThreadContextStack.html | 130 +
.../apache/logging/log4j/spi/package-summary.html | 256 +
.../org/apache/logging/log4j/spi/package-tree.html | 169 +
.../org/apache/logging/log4j/spi/package-use.html | 257 +
.../log4j/status/StatusConsoleListener.html | 308 +
.../apache/logging/log4j/status/StatusData.html | 339 +
.../logging/log4j/status/StatusListener.html | 165 +
.../logging/log4j/status/StatusLogger.Config.html | 194 +
.../apache/logging/log4j/status/StatusLogger.html | 1260 +
.../status/class-use/StatusConsoleListener.html | 105 +
.../logging/log4j/status/class-use/StatusData.html | 109 +
.../log4j/status/class-use/StatusListener.html | 118 +
.../status/class-use/StatusLogger.Config.html | 105 +
.../log4j/status/class-use/StatusLogger.html | 102 +
.../logging/log4j/status/package-summary.html | 147 +
.../apache/logging/log4j/status/package-tree.html | 102 +
.../apache/logging/log4j/status/package-use.html | 104 +
.../org/apache/logging/log4j/util/Activator.html | 211 +
.../org/apache/logging/log4j/util/Base64Util.html | 143 +
.../org/apache/logging/log4j/util/BiConsumer.html | 170 +
.../org/apache/logging/log4j/util/Cast.html | 150 +
.../org/apache/logging/log4j/util/Chars.html | 345 +
.../org/apache/logging/log4j/util/Constants.html | 264 +
.../apache/logging/log4j/util/EnglishEnums.html | 194 +
.../log4j/util/EnvironmentPropertySource.html | 321 +
.../log4j/util/FilteredObjectInputStream.html | 272 +
.../log4j/util/IndexedReadOnlyStringMap.html | 217 +
.../logging/log4j/util/IndexedStringMap.html | 130 +
.../org/apache/logging/log4j/util/InternalApi.html | 90 +
.../logging/log4j/util/InternalException.html | 195 +
.../org/apache/logging/log4j/util/LambdaUtil.html | 209 +
.../org/apache/logging/log4j/util/Lazy.html | 249 +
.../org/apache/logging/log4j/util/LazyBoolean.html | 190 +
.../org/apache/logging/log4j/util/LoaderUtil.html | 619 +
.../apache/logging/log4j/util/MessageSupplier.html | 165 +
.../util/MultiFormatStringBuilderFormattable.html | 168 +
.../logging/log4j/util/OsgiServiceLocator.html | 187 +
.../logging/log4j/util/PerformanceSensitive.html | 135 +
.../apache/logging/log4j/util/ProcessIdUtil.html | 205 +
.../log4j/util/PropertiesPropertySource.html | 310 +
.../apache/logging/log4j/util/PropertiesUtil.html | 754 +
.../log4j/util/PropertyFilePropertySource.html | 165 +
.../log4j/util/PropertySource.Comparator.html | 192 +
.../logging/log4j/util/PropertySource.Util.html | 175 +
.../apache/logging/log4j/util/PropertySource.html | 259 +
.../logging/log4j/util/ProviderActivator.html | 231 +
.../apache/logging/log4j/util/ProviderUtil.html | 174 +
.../logging/log4j/util/ReadOnlyStringMap.html | 293 +
.../logging/log4j/util/ServiceLoaderUtil.html | 174 +
.../logging/log4j/util/SortedArrayStringMap.html | 631 +
.../apache/logging/log4j/util/StackLocator.html | 256 +
.../logging/log4j/util/StackLocatorUtil.html | 258 +
.../log4j/util/StringBuilderFormattable.html | 151 +
.../apache/logging/log4j/util/StringBuilders.html | 341 +
.../org/apache/logging/log4j/util/StringMap.html | 305 +
.../org/apache/logging/log4j/util/Strings.html | 576 +
.../org/apache/logging/log4j/util/Supplier.html | 170 +
.../log4j/util/SystemPropertiesPropertySource.html | 330 +
.../apache/logging/log4j/util/Timer.Status.html | 225 +
.../org/apache/logging/log4j/util/Timer.html | 395 +
.../org/apache/logging/log4j/util/TriConsumer.html | 159 +
.../org/apache/logging/log4j/util/Unbox.html | 306 +
.../logging/log4j/util/class-use/Activator.html | 62 +
.../logging/log4j/util/class-use/Base64Util.html | 62 +
.../logging/log4j/util/class-use/BiConsumer.html | 149 +
.../apache/logging/log4j/util/class-use/Cast.html | 62 +
.../apache/logging/log4j/util/class-use/Chars.html | 62 +
.../logging/log4j/util/class-use/Constants.html | 62 +
.../logging/log4j/util/class-use/EnglishEnums.html | 62 +
.../util/class-use/EnvironmentPropertySource.html | 62 +
.../util/class-use/FilteredObjectInputStream.html | 62 +
.../util/class-use/IndexedReadOnlyStringMap.html | 123 +
.../log4j/util/class-use/IndexedStringMap.html | 92 +
.../logging/log4j/util/class-use/InternalApi.html | 152 +
.../log4j/util/class-use/InternalException.html | 62 +
.../logging/log4j/util/class-use/LambdaUtil.html | 62 +
.../apache/logging/log4j/util/class-use/Lazy.html | 111 +
.../logging/log4j/util/class-use/LazyBoolean.html | 62 +
.../logging/log4j/util/class-use/LoaderUtil.html | 62 +
.../log4j/util/class-use/MessageSupplier.html | 471 +
.../MultiFormatStringBuilderFormattable.html | 101 +
.../log4j/util/class-use/OsgiServiceLocator.html | 62 +
.../log4j/util/class-use/PerformanceSensitive.html | 266 +
.../log4j/util/class-use/ProcessIdUtil.html | 62 +
.../util/class-use/PropertiesPropertySource.html | 91 +
.../log4j/util/class-use/PropertiesUtil.html | 118 +
.../util/class-use/PropertyFilePropertySource.html | 62 +
.../util/class-use/PropertySource.Comparator.html | 62 +
.../log4j/util/class-use/PropertySource.Util.html | 62 +
.../log4j/util/class-use/PropertySource.html | 142 +
.../log4j/util/class-use/ProviderActivator.html | 62 +
.../logging/log4j/util/class-use/ProviderUtil.html | 62 +
.../log4j/util/class-use/ReadOnlyStringMap.html | 157 +
.../log4j/util/class-use/ServiceLoaderUtil.html | 62 +
.../log4j/util/class-use/SortedArrayStringMap.html | 62 +
.../logging/log4j/util/class-use/StackLocator.html | 91 +
.../log4j/util/class-use/StackLocatorUtil.html | 62 +
.../util/class-use/StringBuilderFormattable.html | 236 +
.../log4j/util/class-use/StringBuilders.html | 62 +
.../logging/log4j/util/class-use/StringMap.html | 129 +
.../logging/log4j/util/class-use/Strings.html | 62 +
.../logging/log4j/util/class-use/Supplier.html | 737 +
.../class-use/SystemPropertiesPropertySource.html | 62 +
.../logging/log4j/util/class-use/Timer.Status.html | 103 +
.../apache/logging/log4j/util/class-use/Timer.html | 62 +
.../logging/log4j/util/class-use/TriConsumer.html | 143 +
.../apache/logging/log4j/util/class-use/Unbox.html | 62 +
.../apache/logging/log4j/util/package-summary.html | 306 +
.../apache/logging/log4j/util/package-tree.html | 203 +
.../org/apache/logging/log4j/util/package-use.html | 282 +
javadoc/log4j-api/overview-summary.html | 25 +
javadoc/log4j-api/overview-tree.html | 363 +
javadoc/log4j-api/package-search-index.js | 1 +
javadoc/log4j-api/resources/glass.png | Bin 0 -> 499 bytes
javadoc/log4j-api/resources/x.png | Bin 0 -> 394 bytes
javadoc/log4j-api/script-dir/jquery-3.6.1.min.js | 2 +
javadoc/log4j-api/script-dir/jquery-ui.min.css | 6 +
javadoc/log4j-api/script-dir/jquery-ui.min.js | 6 +
javadoc/log4j-api/script.js | 132 +
javadoc/log4j-api/search.js | 354 +
javadoc/log4j-api/serialized-form.html | 1428 ++
javadoc/log4j-api/stylesheet.css | 869 +
javadoc/log4j-api/tag-search-index.js | 1 +
javadoc/log4j-api/type-search-index.js | 1 +
javadoc/log4j-core/allclasses-index.html | 2953 +++
javadoc/log4j-core/allpackages-index.html | 259 +
javadoc/log4j-core/constant-values.html | 1403 ++
javadoc/log4j-core/deprecated-list.html | 787 +
javadoc/log4j-core/element-list | 49 +
javadoc/log4j-core/help-doc.html | 201 +
javadoc/log4j-core/index-all.html | 18783 +++++++++++++++
javadoc/log4j-core/index.html | 261 +
javadoc/log4j-core/jquery-ui.overrides.css | 35 +
javadoc/log4j-core/legal/ADDITIONAL_LICENSE_INFO | 37 +
javadoc/log4j-core/legal/ASSEMBLY_EXCEPTION | 27 +
javadoc/log4j-core/legal/LICENSE | 347 +
javadoc/log4j-core/legal/jquery.md | 72 +
javadoc/log4j-core/legal/jqueryUI.md | 49 +
javadoc/log4j-core/member-search-index.js | 1 +
javadoc/log4j-core/module-search-index.js | 1 +
.../logging/log4j/core/AbstractLifeCycle.html | 459 +
.../logging/log4j/core/AbstractLogEvent.html | 644 +
.../org/apache/logging/log4j/core/Appender.html | 310 +
.../logging/log4j/core/ContextDataInjector.html | 267 +
.../org/apache/logging/log4j/core/Core.html | 169 +
.../log4j/core/DefaultLoggerContextAccessor.html | 205 +
.../apache/logging/log4j/core/ErrorHandler.html | 185 +
.../apache/logging/log4j/core/Filter.Result.html | 274 +
.../org/apache/logging/log4j/core/Filter.html | 816 +
.../org/apache/logging/log4j/core/Layout.html | 302 +
.../apache/logging/log4j/core/LifeCycle.State.html | 268 +
.../org/apache/logging/log4j/core/LifeCycle.html | 222 +
.../org/apache/logging/log4j/core/LifeCycle2.html | 174 +
.../org/apache/logging/log4j/core/LogEvent.html | 565 +
.../logging/log4j/core/LogEventListener.html | 201 +
.../logging/log4j/core/Logger.LoggerProxy.html | 191 +
.../logging/log4j/core/Logger.PrivateConfig.html | 247 +
.../org/apache/logging/log4j/core/Logger.html | 1056 +
.../apache/logging/log4j/core/LoggerContext.html | 1031 +
.../logging/log4j/core/LoggerContextAccessor.html | 134 +
.../apache/logging/log4j/core/StringLayout.html | 161 +
.../org/apache/logging/log4j/core/Version.html | 172 +
.../core/appender/AbstractAppender.Builder.html | 339 +
.../log4j/core/appender/AbstractAppender.html | 501 +
.../appender/AbstractFileAppender.Builder.html | 340 +
.../log4j/core/appender/AbstractFileAppender.html | 229 +
.../AbstractManager.AbstractFactoryData.html | 189 +
.../log4j/core/appender/AbstractManager.html | 534 +
.../AbstractOutputStreamAppender.Builder.html | 270 +
.../appender/AbstractOutputStreamAppender.html | 417 +
.../core/appender/AbstractWriterAppender.html | 392 +
.../core/appender/AppenderLoggingException.html | 252 +
.../log4j/core/appender/AppenderSet.Builder.html | 235 +
.../logging/log4j/core/appender/AppenderSet.html | 168 +
.../log4j/core/appender/AsyncAppender.Builder.html | 281 +
.../logging/log4j/core/appender/AsyncAppender.html | 464 +
.../core/appender/ConfigurationFactoryData.html | 212 +
.../core/appender/ConsoleAppender.Builder.html | 233 +
.../core/appender/ConsoleAppender.Target.html | 244 +
.../log4j/core/appender/ConsoleAppender.html | 347 +
.../log4j/core/appender/CountingNoOpAppender.html | 249 +
.../log4j/core/appender/DefaultErrorHandler.html | 235 +
.../log4j/core/appender/FailoverAppender.html | 273 +
.../log4j/core/appender/FailoversPlugin.html | 150 +
.../log4j/core/appender/FileAppender.Builder.html | 368 +
.../logging/log4j/core/appender/FileAppender.html | 339 +
.../logging/log4j/core/appender/FileManager.html | 645 +
.../log4j/core/appender/HttpAppender.Builder.html | 327 +
.../logging/log4j/core/appender/HttpAppender.html | 277 +
.../logging/log4j/core/appender/HttpManager.html | 225 +
.../core/appender/HttpURLConnectionManager.html | 222 +
.../log4j/core/appender/ManagerFactory.html | 155 +
.../appender/MemoryMappedFileAppender.Builder.html | 251 +
.../core/appender/MemoryMappedFileAppender.html | 323 +
.../core/appender/MemoryMappedFileManager.html | 531 +
.../logging/log4j/core/appender/NullAppender.html | 240 +
.../appender/OutputStreamAppender.Builder.html | 224 +
.../log4j/core/appender/OutputStreamAppender.html | 242 +
.../log4j/core/appender/OutputStreamManager.html | 721 +
.../appender/RandomAccessFileAppender.Builder.html | 242 +
.../core/appender/RandomAccessFileAppender.html | 328 +
.../core/appender/RandomAccessFileManager.html | 395 +
.../core/appender/RollingFileAppender.Builder.html | 426 +
.../log4j/core/appender/RollingFileAppender.html | 407 +
.../RollingRandomAccessFileAppender.Builder.html | 291 +
.../appender/RollingRandomAccessFileAppender.html | 367 +
.../appender/ScriptAppenderSelector.Builder.html | 259 +
.../core/appender/ScriptAppenderSelector.html | 214 +
.../log4j/core/appender/SmtpAppender.Builder.html | 410 +
.../logging/log4j/core/appender/SmtpAppender.html | 342 +
.../appender/SocketAppender.AbstractBuilder.html | 471 +
.../core/appender/SocketAppender.Builder.html | 211 +
.../log4j/core/appender/SocketAppender.html | 526 +
.../core/appender/SyslogAppender.Builder.html | 546 +
.../log4j/core/appender/SyslogAppender.html | 431 +
.../log4j/core/appender/TlsSyslogFrame.html | 211 +
.../core/appender/WriterAppender.Builder.html | 215 +
.../log4j/core/appender/WriterAppender.html | 242 +
.../logging/log4j/core/appender/WriterManager.html | 347 +
.../class-use/AbstractAppender.Builder.html | 279 +
.../core/appender/class-use/AbstractAppender.html | 350 +
.../class-use/AbstractFileAppender.Builder.html | 91 +
.../appender/class-use/AbstractFileAppender.html | 62 +
.../AbstractManager.AbstractFactoryData.html | 93 +
.../core/appender/class-use/AbstractManager.html | 347 +
.../AbstractOutputStreamAppender.Builder.html | 148 +
.../class-use/AbstractOutputStreamAppender.html | 137 +
.../appender/class-use/AbstractWriterAppender.html | 91 +
.../class-use/AppenderLoggingException.html | 92 +
.../appender/class-use/AppenderSet.Builder.html | 95 +
.../log4j/core/appender/class-use/AppenderSet.html | 101 +
.../appender/class-use/AsyncAppender.Builder.html | 128 +
.../core/appender/class-use/AsyncAppender.html | 146 +
.../class-use/ConfigurationFactoryData.html | 62 +
.../class-use/ConsoleAppender.Builder.html | 100 +
.../appender/class-use/ConsoleAppender.Target.html | 122 +
.../core/appender/class-use/ConsoleAppender.html | 117 +
.../appender/class-use/CountingNoOpAppender.html | 91 +
.../appender/class-use/DefaultErrorHandler.html | 62 +
.../core/appender/class-use/FailoverAppender.html | 97 +
.../core/appender/class-use/FailoversPlugin.html | 62 +
.../appender/class-use/FileAppender.Builder.html | 119 +
.../core/appender/class-use/FileAppender.html | 108 +
.../log4j/core/appender/class-use/FileManager.html | 128 +
.../appender/class-use/HttpAppender.Builder.html | 100 +
.../core/appender/class-use/HttpAppender.html | 89 +
.../log4j/core/appender/class-use/HttpManager.html | 89 +
.../class-use/HttpURLConnectionManager.html | 62 +
.../core/appender/class-use/ManagerFactory.html | 167 +
.../MemoryMappedFileAppender.Builder.html | 117 +
.../class-use/MemoryMappedFileAppender.html | 106 +
.../class-use/MemoryMappedFileManager.html | 96 +
.../core/appender/class-use/NullAppender.html | 89 +
.../class-use/OutputStreamAppender.Builder.html | 100 +
.../appender/class-use/OutputStreamAppender.html | 99 +
.../appender/class-use/OutputStreamManager.html | 205 +
.../RandomAccessFileAppender.Builder.html | 119 +
.../class-use/RandomAccessFileAppender.html | 106 +
.../class-use/RandomAccessFileManager.html | 97 +
.../class-use/RollingFileAppender.Builder.html | 123 +
.../appender/class-use/RollingFileAppender.html | 110 +
.../RollingRandomAccessFileAppender.Builder.html | 118 +
.../class-use/RollingRandomAccessFileAppender.html | 109 +
.../class-use/ScriptAppenderSelector.Builder.html | 101 +
.../appender/class-use/ScriptAppenderSelector.html | 62 +
.../appender/class-use/SmtpAppender.Builder.html | 169 +
.../core/appender/class-use/SmtpAppender.html | 113 +
.../class-use/SocketAppender.AbstractBuilder.html | 105 +
.../appender/class-use/SocketAppender.Builder.html | 89 +
.../core/appender/class-use/SocketAppender.html | 140 +
.../appender/class-use/SyslogAppender.Builder.html | 135 +
.../core/appender/class-use/SyslogAppender.html | 126 +
.../core/appender/class-use/TlsSyslogFrame.html | 62 +
.../appender/class-use/WriterAppender.Builder.html | 100 +
.../core/appender/class-use/WriterAppender.html | 99 +
.../core/appender/class-use/WriterManager.html | 117 +
.../db/AbstractDatabaseAppender.Builder.html | 150 +
.../core/appender/db/AbstractDatabaseAppender.html | 457 +
...bstractDatabaseManager.AbstractFactoryData.html | 236 +
.../core/appender/db/AbstractDatabaseManager.html | 598 +
.../core/appender/db/ColumnMapping.Builder.html | 349 +
.../log4j/core/appender/db/ColumnMapping.html | 305 +
.../appender/db/DbAppenderLoggingException.html | 212 +
.../AbstractDatabaseAppender.Builder.html | 108 +
.../db/class-use/AbstractDatabaseAppender.html | 111 +
...bstractDatabaseManager.AbstractFactoryData.html | 96 +
.../db/class-use/AbstractDatabaseManager.html | 147 +
.../db/class-use/ColumnMapping.Builder.html | 133 +
.../core/appender/db/class-use/ColumnMapping.html | 160 +
.../db/class-use/DbAppenderLoggingException.html | 62 +
.../appender/db/jdbc/AbstractConnectionSource.html | 170 +
...tractDriverManagerConnectionSource.Builder.html | 337 +
.../AbstractDriverManagerConnectionSource.html | 374 +
.../appender/db/jdbc/ColumnConfig.Builder.html | 302 +
.../log4j/core/appender/db/jdbc/ColumnConfig.html | 278 +
.../core/appender/db/jdbc/ConnectionSource.html | 182 +
.../db/jdbc/DataSourceConnectionSource.html | 227 +
.../DriverManagerConnectionSource.Builder.html | 205 +
.../db/jdbc/DriverManagerConnectionSource.html | 233 +
.../db/jdbc/FactoryMethodConnectionSource.html | 235 +
.../appender/db/jdbc/JdbcAppender.Builder.html | 326 +
.../log4j/core/appender/db/jdbc/JdbcAppender.html | 269 +
.../core/appender/db/jdbc/JdbcDatabaseManager.html | 493 +
.../jdbc/class-use/AbstractConnectionSource.html | 109 +
...tractDriverManagerConnectionSource.Builder.html | 102 +
.../AbstractDriverManagerConnectionSource.html | 92 +
.../db/jdbc/class-use/ColumnConfig.Builder.html | 125 +
.../appender/db/jdbc/class-use/ColumnConfig.html | 179 +
.../db/jdbc/class-use/ConnectionSource.html | 198 +
.../jdbc/class-use/DataSourceConnectionSource.html | 91 +
.../DriverManagerConnectionSource.Builder.html | 100 +
.../class-use/DriverManagerConnectionSource.html | 89 +
.../class-use/FactoryMethodConnectionSource.html | 92 +
.../db/jdbc/class-use/JdbcAppender.Builder.html | 111 +
.../appender/db/jdbc/class-use/JdbcAppender.html | 102 +
.../db/jdbc/class-use/JdbcDatabaseManager.html | 139 +
.../core/appender/db/jdbc/package-summary.html | 160 +
.../log4j/core/appender/db/jdbc/package-tree.html | 142 +
.../log4j/core/appender/db/jdbc/package-use.html | 133 +
.../log4j/core/appender/db/package-summary.html | 161 +
.../log4j/core/appender/db/package-tree.html | 130 +
.../log4j/core/appender/db/package-use.html | 152 +
.../core/appender/mom/JmsAppender.Builder.html | 364 +
.../log4j/core/appender/mom/JmsAppender.html | 328 +
.../mom/JmsManager.JmsManagerConfiguration.html | 225 +
.../log4j/core/appender/mom/JmsManager.html | 321 +
.../mom/class-use/JmsAppender.Builder.html | 148 +
.../core/appender/mom/class-use/JmsAppender.html | 89 +
.../JmsManager.JmsManagerConfiguration.html | 89 +
.../core/appender/mom/class-use/JmsManager.html | 137 +
.../core/appender/mom/jeromq/JeroMqAppender.html | 322 +
.../core/appender/mom/jeromq/JeroMqManager.html | 326 +
.../mom/jeromq/class-use/JeroMqAppender.html | 113 +
.../mom/jeromq/class-use/JeroMqManager.html | 110 +
.../core/appender/mom/jeromq/package-summary.html | 119 +
.../core/appender/mom/jeromq/package-tree.html | 93 +
.../core/appender/mom/jeromq/package-use.html | 92 +
.../mom/kafka/DefaultKafkaProducerFactory.html | 181 +
.../appender/mom/kafka/KafkaAppender.Builder.html | 295 +
.../core/appender/mom/kafka/KafkaAppender.html | 308 +
.../core/appender/mom/kafka/KafkaManager.html | 331 +
.../appender/mom/kafka/KafkaProducerFactory.html | 144 +
.../class-use/DefaultKafkaProducerFactory.html | 62 +
.../mom/kafka/class-use/KafkaAppender.Builder.html | 102 +
.../mom/kafka/class-use/KafkaAppender.html | 101 +
.../appender/mom/kafka/class-use/KafkaManager.html | 96 +
.../mom/kafka/class-use/KafkaProducerFactory.html | 91 +
.../core/appender/mom/kafka/package-summary.html | 135 +
.../core/appender/mom/kafka/package-tree.html | 109 +
.../log4j/core/appender/mom/kafka/package-use.html | 98 +
.../log4j/core/appender/mom/package-summary.html | 148 +
.../log4j/core/appender/mom/package-tree.html | 103 +
.../log4j/core/appender/mom/package-use.html | 96 +
.../appender/nosql/AbstractNoSqlConnection.html | 226 +
.../core/appender/nosql/DefaultNoSqlObject.html | 272 +
.../core/appender/nosql/NoSqlAppender.Builder.html | 238 +
.../log4j/core/appender/nosql/NoSqlAppender.html | 272 +
.../log4j/core/appender/nosql/NoSqlConnection.html | 245 +
.../core/appender/nosql/NoSqlDatabaseManager.html | 330 +
.../log4j/core/appender/nosql/NoSqlObject.html | 221 +
.../log4j/core/appender/nosql/NoSqlProvider.html | 174 +
.../nosql/class-use/AbstractNoSqlConnection.html | 62 +
.../nosql/class-use/DefaultNoSqlObject.html | 62 +
.../nosql/class-use/NoSqlAppender.Builder.html | 100 +
.../appender/nosql/class-use/NoSqlAppender.html | 100 +
.../appender/nosql/class-use/NoSqlConnection.html | 103 +
.../nosql/class-use/NoSqlDatabaseManager.html | 104 +
.../core/appender/nosql/class-use/NoSqlObject.html | 156 +
.../appender/nosql/class-use/NoSqlProvider.html | 120 +
.../log4j/core/appender/nosql/package-summary.html | 167 +
.../log4j/core/appender/nosql/package-tree.html | 128 +
.../log4j/core/appender/nosql/package-use.html | 109 +
.../log4j/core/appender/package-summary.html | 355 +
.../logging/log4j/core/appender/package-tree.html | 208 +
.../logging/log4j/core/appender/package-use.html | 556 +
.../rewrite/LoggerNameLevelRewritePolicy.html | 188 +
.../appender/rewrite/MapRewritePolicy.Mode.html | 225 +
.../core/appender/rewrite/MapRewritePolicy.html | 245 +
.../appender/rewrite/PropertiesRewritePolicy.html | 227 +
.../core/appender/rewrite/RewriteAppender.html | 269 +
.../log4j/core/appender/rewrite/RewritePolicy.html | 144 +
.../class-use/LoggerNameLevelRewritePolicy.html | 92 +
.../rewrite/class-use/MapRewritePolicy.Mode.html | 97 +
.../rewrite/class-use/MapRewritePolicy.html | 92 +
.../rewrite/class-use/PropertiesRewritePolicy.html | 92 +
.../rewrite/class-use/RewriteAppender.html | 96 +
.../appender/rewrite/class-use/RewritePolicy.html | 160 +
.../core/appender/rewrite/package-summary.html | 155 +
.../log4j/core/appender/rewrite/package-tree.html | 111 +
.../log4j/core/appender/rewrite/package-use.html | 126 +
.../appender/rolling/AbstractRolloverStrategy.html | 312 +
.../appender/rolling/AbstractTriggeringPolicy.html | 169 +
.../rolling/CompositeTriggeringPolicy.html | 264 +
.../appender/rolling/CronTriggeringPolicy.html | 273 +
.../rolling/DefaultRolloverStrategy.Builder.html | 404 +
.../appender/rolling/DefaultRolloverStrategy.html | 446 +
.../rolling/DirectFileRolloverStrategy.html | 143 +
.../DirectWriteRolloverStrategy.Builder.html | 349 +
.../rolling/DirectWriteRolloverStrategy.html | 419 +
.../log4j/core/appender/rolling/FileExtension.html | 296 +
.../log4j/core/appender/rolling/FileSize.html | 151 +
.../appender/rolling/NoOpTriggeringPolicy.html | 257 +
.../rolling/OnStartupTriggeringPolicy.html | 218 +
.../core/appender/rolling/PatternProcessor.html | 440 +
.../core/appender/rolling/RollingFileManager.html | 794 +
.../rolling/RollingRandomAccessFileManager.html | 528 +
.../core/appender/rolling/RolloverDescription.html | 193 +
.../appender/rolling/RolloverDescriptionImpl.html | 253 +
.../core/appender/rolling/RolloverFrequency.html | 286 +
.../core/appender/rolling/RolloverListener.html | 155 +
.../core/appender/rolling/RolloverStrategy.html | 147 +
.../rolling/SizeBasedTriggeringPolicy.html | 283 +
.../rolling/TimeBasedTriggeringPolicy.Builder.html | 240 +
.../rolling/TimeBasedTriggeringPolicy.html | 273 +
.../core/appender/rolling/TriggeringPolicy.html | 171 +
.../appender/rolling/action/AbstractAction.html | 294 +
.../rolling/action/AbstractPathAction.html | 383 +
.../log4j/core/appender/rolling/action/Action.html | 184 +
.../rolling/action/CommonsCompressAction.html | 311 +
.../appender/rolling/action/CompositeAction.html | 252 +
.../core/appender/rolling/action/DeleteAction.html | 310 +
.../appender/rolling/action/DeletingVisitor.html | 253 +
.../core/appender/rolling/action/Duration.html | 347 +
.../appender/rolling/action/FileRenameAction.html | 291 +
.../appender/rolling/action/GzCompressAction.html | 357 +
.../rolling/action/IfAccumulatedFileCount.html | 245 +
.../rolling/action/IfAccumulatedFileSize.html | 245 +
.../log4j/core/appender/rolling/action/IfAll.html | 279 +
.../log4j/core/appender/rolling/action/IfAny.html | 234 +
.../core/appender/rolling/action/IfFileName.html | 274 +
.../rolling/action/IfLastModified.Builder.html | 208 +
.../appender/rolling/action/IfLastModified.html | 282 +
.../log4j/core/appender/rolling/action/IfNot.html | 233 +
.../appender/rolling/action/PathCondition.html | 213 +
.../rolling/action/PathSortByModificationTime.html | 232 +
.../core/appender/rolling/action/PathSorter.html | 107 +
.../rolling/action/PathWithAttributes.html | 202 +
.../action/PosixViewAttributeAction.Builder.html | 371 +
.../rolling/action/PosixViewAttributeAction.html | 296 +
.../appender/rolling/action/ScriptCondition.html | 234 +
.../appender/rolling/action/SortingVisitor.html | 220 +
.../appender/rolling/action/ZipCompressAction.html | 311 +
.../rolling/action/class-use/AbstractAction.html | 126 +
.../action/class-use/AbstractPathAction.html | 96 +
.../appender/rolling/action/class-use/Action.html | 336 +
.../action/class-use/CommonsCompressAction.html | 62 +
.../rolling/action/class-use/CompositeAction.html | 62 +
.../rolling/action/class-use/DeleteAction.html | 98 +
.../rolling/action/class-use/DeletingVisitor.html | 62 +
.../rolling/action/class-use/Duration.html | 155 +
.../rolling/action/class-use/FileRenameAction.html | 62 +
.../rolling/action/class-use/GzCompressAction.html | 62 +
.../action/class-use/IfAccumulatedFileCount.html | 92 +
.../action/class-use/IfAccumulatedFileSize.html | 92 +
.../appender/rolling/action/class-use/IfAll.html | 91 +
.../appender/rolling/action/class-use/IfAny.html | 91 +
.../rolling/action/class-use/IfFileName.html | 94 +
.../action/class-use/IfLastModified.Builder.html | 95 +
.../rolling/action/class-use/IfLastModified.html | 97 +
.../appender/rolling/action/class-use/IfNot.html | 91 +
.../rolling/action/class-use/PathCondition.html | 312 +
.../class-use/PathSortByModificationTime.html | 62 +
.../rolling/action/class-use/PathSorter.html | 131 +
.../action/class-use/PathWithAttributes.html | 117 +
.../PosixViewAttributeAction.Builder.html | 139 +
.../action/class-use/PosixViewAttributeAction.html | 89 +
.../rolling/action/class-use/ScriptCondition.html | 110 +
.../rolling/action/class-use/SortingVisitor.html | 62 +
.../action/class-use/ZipCompressAction.html | 62 +
.../appender/rolling/action/package-summary.html | 219 +
.../core/appender/rolling/action/package-tree.html | 125 +
.../core/appender/rolling/action/package-use.html | 202 +
.../class-use/AbstractRolloverStrategy.html | 97 +
.../class-use/AbstractTriggeringPolicy.html | 112 +
.../class-use/CompositeTriggeringPolicy.html | 91 +
.../rolling/class-use/CronTriggeringPolicy.html | 93 +
.../class-use/DefaultRolloverStrategy.Builder.html | 129 +
.../rolling/class-use/DefaultRolloverStrategy.html | 102 +
.../class-use/DirectFileRolloverStrategy.html | 92 +
.../DirectWriteRolloverStrategy.Builder.html | 119 +
.../class-use/DirectWriteRolloverStrategy.html | 100 +
.../appender/rolling/class-use/FileExtension.html | 109 +
.../core/appender/rolling/class-use/FileSize.html | 62 +
.../rolling/class-use/NoOpTriggeringPolicy.html | 98 +
.../class-use/OnStartupTriggeringPolicy.html | 89 +
.../rolling/class-use/PatternProcessor.html | 118 +
.../rolling/class-use/RollingFileManager.html | 184 +
.../class-use/RollingRandomAccessFileManager.html | 101 +
.../rolling/class-use/RolloverDescription.html | 112 +
.../rolling/class-use/RolloverDescriptionImpl.html | 62 +
.../rolling/class-use/RolloverFrequency.html | 100 +
.../rolling/class-use/RolloverListener.html | 96 +
.../rolling/class-use/RolloverStrategy.html | 339 +
.../class-use/SizeBasedTriggeringPolicy.html | 91 +
.../TimeBasedTriggeringPolicy.Builder.html | 98 +
.../class-use/TimeBasedTriggeringPolicy.html | 97 +
.../rolling/class-use/TriggeringPolicy.html | 382 +
.../core/appender/rolling/package-summary.html | 231 +
.../log4j/core/appender/rolling/package-tree.html | 143 +
.../log4j/core/appender/rolling/package-use.html | 195 +
.../core/appender/routing/IdlePurgePolicy.html | 329 +
.../log4j/core/appender/routing/PurgePolicy.html | 170 +
.../logging/log4j/core/appender/routing/Route.html | 221 +
.../core/appender/routing/Routes.Builder.html | 258 +
.../log4j/core/appender/routing/Routes.html | 258 +
.../appender/routing/RoutingAppender.Builder.html | 268 +
.../core/appender/routing/RoutingAppender.html | 429 +
.../routing/class-use/IdlePurgePolicy.html | 62 +
.../appender/routing/class-use/PurgePolicy.html | 133 +
.../core/appender/routing/class-use/Route.html | 124 +
.../appender/routing/class-use/Routes.Builder.html | 101 +
.../core/appender/routing/class-use/Routes.html | 125 +
.../routing/class-use/RoutingAppender.Builder.html | 98 +
.../routing/class-use/RoutingAppender.html | 116 +
.../core/appender/routing/package-summary.html | 156 +
.../log4j/core/appender/routing/package-tree.html | 107 +
.../log4j/core/appender/routing/package-use.html | 106 +
.../core/async/ArrayBlockingQueueFactory.html | 208 +
.../logging/log4j/core/async/AsyncLogger.html | 342 +
.../core/async/AsyncLoggerConfig.Builder.html | 192 +
.../AsyncLoggerConfig.RootLogger.Builder.html | 192 +
.../core/async/AsyncLoggerConfig.RootLogger.html | 289 +
.../log4j/core/async/AsyncLoggerConfig.html | 475 +
.../AsyncLoggerConfigDefaultExceptionHandler.html | 202 +
.../core/async/AsyncLoggerConfigDelegate.html | 213 +
...yncLoggerConfigDisruptor.Log4jEventWrapper.html | 192 +
.../core/async/AsyncLoggerConfigDisruptor.html | 360 +
.../log4j/core/async/AsyncLoggerContext.html | 371 +
.../core/async/AsyncLoggerContextSelector.html | 240 +
.../async/AsyncLoggerDefaultExceptionHandler.html | 202 +
.../core/async/AsyncQueueFullMessageUtil.html | 143 +
.../log4j/core/async/AsyncQueueFullPolicy.html | 179 +
.../core/async/AsyncQueueFullPolicyFactory.html | 199 +
.../log4j/core/async/AsyncWaitStrategyFactory.html | 143 +
.../AsyncWaitStrategyFactoryConfig.Builder.html | 218 +
.../core/async/AsyncWaitStrategyFactoryConfig.html | 229 +
.../async/BasicAsyncLoggerContextSelector.html | 348 +
.../log4j/core/async/BlockingQueueFactory.html | 190 +
.../core/async/DefaultAsyncQueueFullPolicy.html | 190 +
.../core/async/DiscardingAsyncQueueFullPolicy.html | 216 +
.../core/async/DisruptorBlockingQueueFactory.html | 182 +
.../logging/log4j/core/async/EventRoute.html | 287 +
.../log4j/core/async/InternalAsyncUtil.html | 180 +
.../JCToolsBlockingQueueFactory.WaitStrategy.html | 233 +
.../core/async/JCToolsBlockingQueueFactory.html | 197 +
.../core/async/LinkedTransferQueueFactory.html | 208 +
.../log4j/core/async/RingBufferLogEvent.html | 983 +
.../core/async/RingBufferLogEventHandler.html | 247 +
.../core/async/RingBufferLogEventTranslator.html | 281 +
.../core/async/ThreadNameCachingStrategy.html | 223 +
.../async/class-use/ArrayBlockingQueueFactory.html | 89 +
.../log4j/core/async/class-use/AsyncLogger.html | 124 +
.../async/class-use/AsyncLoggerConfig.Builder.html | 98 +
.../AsyncLoggerConfig.RootLogger.Builder.html | 98 +
.../class-use/AsyncLoggerConfig.RootLogger.html | 62 +
.../core/async/class-use/AsyncLoggerConfig.html | 108 +
.../AsyncLoggerConfigDefaultExceptionHandler.html | 62 +
.../async/class-use/AsyncLoggerConfigDelegate.html | 115 +
...yncLoggerConfigDisruptor.Log4jEventWrapper.html | 62 +
.../class-use/AsyncLoggerConfigDisruptor.html | 62 +
.../core/async/class-use/AsyncLoggerContext.html | 62 +
.../class-use/AsyncLoggerContextSelector.html | 62 +
.../AsyncLoggerDefaultExceptionHandler.html | 62 +
.../async/class-use/AsyncQueueFullMessageUtil.html | 62 +
.../core/async/class-use/AsyncQueueFullPolicy.html | 119 +
.../class-use/AsyncQueueFullPolicyFactory.html | 62 +
.../async/class-use/AsyncWaitStrategyFactory.html | 123 +
.../AsyncWaitStrategyFactoryConfig.Builder.html | 100 +
.../class-use/AsyncWaitStrategyFactoryConfig.html | 89 +
.../class-use/BasicAsyncLoggerContextSelector.html | 62 +
.../core/async/class-use/BlockingQueueFactory.html | 124 +
.../class-use/DefaultAsyncQueueFullPolicy.html | 93 +
.../class-use/DiscardingAsyncQueueFullPolicy.html | 62 +
.../class-use/DisruptorBlockingQueueFactory.html | 89 +
.../log4j/core/async/class-use/EventRoute.html | 119 +
.../core/async/class-use/InternalAsyncUtil.html | 62 +
.../JCToolsBlockingQueueFactory.WaitStrategy.html | 106 +
.../class-use/JCToolsBlockingQueueFactory.html | 89 +
.../class-use/LinkedTransferQueueFactory.html | 89 +
.../core/async/class-use/RingBufferLogEvent.html | 100 +
.../async/class-use/RingBufferLogEventHandler.html | 62 +
.../class-use/RingBufferLogEventTranslator.html | 62 +
.../async/class-use/ThreadNameCachingStrategy.html | 100 +
.../logging/log4j/core/async/package-summary.html | 244 +
.../logging/log4j/core/async/package-tree.html | 165 +
.../logging/log4j/core/async/package-use.html | 199 +
.../log4j/core/class-use/AbstractLifeCycle.html | 789 +
.../log4j/core/class-use/AbstractLogEvent.html | 62 +
.../logging/log4j/core/class-use/Appender.html | 576 +
.../log4j/core/class-use/ContextDataInjector.html | 116 +
.../apache/logging/log4j/core/class-use/Core.html | 62 +
.../class-use/DefaultLoggerContextAccessor.html | 91 +
.../logging/log4j/core/class-use/ErrorHandler.html | 144 +
.../log4j/core/class-use/Filter.Result.html | 2719 +++
.../logging/log4j/core/class-use/Filter.html | 1215 +
.../logging/log4j/core/class-use/Layout.html | 1356 ++
.../log4j/core/class-use/LifeCycle.State.html | 132 +
.../logging/log4j/core/class-use/LifeCycle.html | 853 +
.../logging/log4j/core/class-use/LifeCycle2.html | 799 +
.../logging/log4j/core/class-use/LogEvent.html | 1737 ++
.../log4j/core/class-use/LogEventListener.html | 62 +
.../log4j/core/class-use/Logger.LoggerProxy.html | 62 +
.../log4j/core/class-use/Logger.PrivateConfig.html | 105 +
.../logging/log4j/core/class-use/Logger.html | 2532 ++
.../log4j/core/class-use/LoggerContext.html | 1133 +
.../core/class-use/LoggerContextAccessor.html | 91 +
.../logging/log4j/core/class-use/StringLayout.html | 255 +
.../logging/log4j/core/class-use/Version.html | 62 +
.../log4j/core/config/AbstractConfiguration.html | 1272 +
.../logging/log4j/core/config/AppenderControl.html | 293 +
.../log4j/core/config/AppenderControlArraySet.html | 266 +
.../logging/log4j/core/config/AppenderRef.html | 200 +
.../logging/log4j/core/config/AppendersPlugin.html | 150 +
.../config/AwaitCompletionReliabilityStrategy.html | 334 +
.../AwaitUnconditionallyReliabilityStrategy.html | 333 +
.../logging/log4j/core/config/Configuration.html | 663 +
.../log4j/core/config/ConfigurationAware.html | 145 +
.../log4j/core/config/ConfigurationException.html | 195 +
.../log4j/core/config/ConfigurationFactory.html | 624 +
.../core/config/ConfigurationFileWatcher.html | 304 +
.../log4j/core/config/ConfigurationListener.html | 134 +
.../ConfigurationScheduler.CronRunnable.html | 200 +
.../log4j/core/config/ConfigurationScheduler.html | 454 +
.../log4j/core/config/ConfigurationSource.html | 522 +
.../logging/log4j/core/config/Configurator.html | 642 +
.../log4j/core/config/CronScheduledFuture.html | 275 +
.../log4j/core/config/CustomLevelConfig.html | 229 +
.../logging/log4j/core/config/CustomLevels.html | 167 +
.../log4j/core/config/DefaultAdvertiser.html | 200 +
.../log4j/core/config/DefaultConfiguration.html | 300 +
.../core/config/DefaultReliabilityStrategy.html | 333 +
.../logging/log4j/core/config/HttpWatcher.html | 280 +
.../config/LocationAwareReliabilityStrategy.html | 164 +
.../core/config/LockingReliabilityStrategy.html | 333 +
.../log4j/core/config/LoggerConfig.Builder.html | 383 +
.../core/config/LoggerConfig.LevelAndRefs.html | 176 +
.../config/LoggerConfig.LoggerConfigPredicate.html | 225 +
.../config/LoggerConfig.RootLogger.Builder.html | 348 +
.../log4j/core/config/LoggerConfig.RootLogger.html | 262 +
.../logging/log4j/core/config/LoggerConfig.html | 980 +
.../log4j/core/config/LoggerContextAware.html | 145 +
.../apache/logging/log4j/core/config/Loggers.html | 174 +
.../logging/log4j/core/config/LoggersPlugin.html | 150 +
.../org/apache/logging/log4j/core/config/Node.html | 392 +
.../log4j/core/config/NullConfiguration.html | 219 +
.../apache/logging/log4j/core/config/Order.html | 134 +
.../logging/log4j/core/config/OrderComparator.html | 204 +
.../log4j/core/config/PropertiesPlugin.html | 155 +
.../apache/logging/log4j/core/config/Property.html | 328 +
.../logging/log4j/core/config/Reconfigurable.html | 134 +
.../log4j/core/config/ReliabilityStrategy.html | 237 +
.../core/config/ReliabilityStrategyFactory.html | 157 +
.../logging/log4j/core/config/Scheduled.html | 86 +
.../logging/log4j/core/config/ScriptsPlugin.html | 150 +
.../log4j/core/config/arbiters/Arbiter.html | 171 +
.../core/config/arbiters/ClassArbiter.Builder.html | 250 +
.../log4j/core/config/arbiters/ClassArbiter.html | 185 +
.../config/arbiters/DefaultArbiter.Builder.html | 195 +
.../log4j/core/config/arbiters/DefaultArbiter.html | 215 +
.../arbiters/EnvironmentArbiter.Builder.html | 285 +
.../core/config/arbiters/EnvironmentArbiter.html | 190 +
.../config/arbiters/ScriptArbiter.Builder.html | 213 +
.../log4j/core/config/arbiters/ScriptArbiter.html | 188 +
.../config/arbiters/SelectArbiter.Builder.html | 195 +
.../log4j/core/config/arbiters/SelectArbiter.html | 194 +
.../arbiters/SystemPropertyArbiter.Builder.html | 285 +
.../config/arbiters/SystemPropertyArbiter.html | 190 +
.../core/config/arbiters/class-use/Arbiter.html | 127 +
.../arbiters/class-use/ClassArbiter.Builder.html | 95 +
.../config/arbiters/class-use/ClassArbiter.html | 87 +
.../arbiters/class-use/DefaultArbiter.Builder.html | 90 +
.../config/arbiters/class-use/DefaultArbiter.html | 87 +
.../class-use/EnvironmentArbiter.Builder.html | 100 +
.../arbiters/class-use/EnvironmentArbiter.html | 87 +
.../arbiters/class-use/ScriptArbiter.Builder.html | 96 +
.../config/arbiters/class-use/ScriptArbiter.html | 87 +
.../arbiters/class-use/SelectArbiter.Builder.html | 90 +
.../config/arbiters/class-use/SelectArbiter.html | 87 +
.../class-use/SystemPropertyArbiter.Builder.html | 100 +
.../arbiters/class-use/SystemPropertyArbiter.html | 87 +
.../core/config/arbiters/package-summary.html | 146 +
.../log4j/core/config/arbiters/package-tree.html | 93 +
.../log4j/core/config/arbiters/package-use.html | 122 +
.../builder/api/AppenderComponentBuilder.html | 175 +
.../builder/api/AppenderRefComponentBuilder.html | 113 +
.../log4j/core/config/builder/api/Component.html | 246 +
.../core/config/builder/api/ComponentBuilder.html | 317 +
.../api/CompositeFilterComponentBuilder.html | 113 +
.../config/builder/api/ConfigurationBuilder.html | 1357 ++
.../builder/api/ConfigurationBuilderFactory.html | 189 +
.../builder/api/CustomLevelComponentBuilder.html | 110 +
.../config/builder/api/FilterComponentBuilder.html | 110 +
.../builder/api/FilterableComponentBuilder.html | 158 +
.../builder/api/KeyValuePairComponentBuilder.html | 110 +
.../config/builder/api/LayoutComponentBuilder.html | 110 +
.../builder/api/LoggableComponentBuilder.html | 161 +
.../config/builder/api/LoggerComponentBuilder.html | 116 +
.../builder/api/PropertyComponentBuilder.html | 110 +
.../builder/api/RootLoggerComponentBuilder.html | 116 +
.../config/builder/api/ScriptComponentBuilder.html | 110 +
.../builder/api/ScriptFileComponentBuilder.html | 172 +
.../api/class-use/AppenderComponentBuilder.html | 136 +
.../api/class-use/AppenderRefComponentBuilder.html | 120 +
.../config/builder/api/class-use/Component.html | 161 +
.../builder/api/class-use/ComponentBuilder.html | 291 +
.../class-use/CompositeFilterComponentBuilder.html | 62 +
.../api/class-use/ConfigurationBuilder.html | 293 +
.../api/class-use/ConfigurationBuilderFactory.html | 172 +
.../api/class-use/CustomLevelComponentBuilder.html | 131 +
.../api/class-use/FilterComponentBuilder.html | 150 +
.../api/class-use/FilterableComponentBuilder.html | 116 +
.../class-use/KeyValuePairComponentBuilder.html | 111 +
.../api/class-use/LayoutComponentBuilder.html | 120 +
.../api/class-use/LoggableComponentBuilder.html | 96 +
.../api/class-use/LoggerComponentBuilder.html | 245 +
.../api/class-use/PropertyComponentBuilder.html | 111 +
.../api/class-use/RootLoggerComponentBuilder.html | 225 +
.../api/class-use/ScriptComponentBuilder.html | 133 +
.../api/class-use/ScriptFileComponentBuilder.html | 151 +
.../core/config/builder/api/package-summary.html | 172 +
.../core/config/builder/api/package-tree.html | 111 +
.../log4j/core/config/builder/api/package-use.html | 306 +
.../config/builder/impl/BuiltConfiguration.html | 354 +
.../builder/impl/DefaultConfigurationBuilder.html | 1631 ++
.../builder/impl/class-use/BuiltConfiguration.html | 138 +
.../class-use/DefaultConfigurationBuilder.html | 62 +
.../core/config/builder/impl/package-summary.html | 100 +
.../core/config/builder/impl/package-tree.html | 89 +
.../core/config/builder/impl/package-use.html | 122 +
.../config/class-use/AbstractConfiguration.html | 259 +
.../core/config/class-use/AppenderControl.html | 132 +
.../config/class-use/AppenderControlArraySet.html | 62 +
.../log4j/core/config/class-use/AppenderRef.html | 335 +
.../core/config/class-use/AppendersPlugin.html | 62 +
.../AwaitCompletionReliabilityStrategy.html | 62 +
.../AwaitUnconditionallyReliabilityStrategy.html | 62 +
.../log4j/core/config/class-use/Configuration.html | 2167 ++
.../core/config/class-use/ConfigurationAware.html | 116 +
.../config/class-use/ConfigurationException.html | 62 +
.../config/class-use/ConfigurationFactory.html | 183 +
.../config/class-use/ConfigurationFileWatcher.html | 62 +
.../config/class-use/ConfigurationListener.html | 274 +
.../ConfigurationScheduler.CronRunnable.html | 62 +
.../config/class-use/ConfigurationScheduler.html | 130 +
.../core/config/class-use/ConfigurationSource.html | 399 +
.../log4j/core/config/class-use/Configurator.html | 62 +
.../core/config/class-use/CronScheduledFuture.html | 108 +
.../core/config/class-use/CustomLevelConfig.html | 123 +
.../log4j/core/config/class-use/CustomLevels.html | 91 +
.../core/config/class-use/DefaultAdvertiser.html | 62 +
.../config/class-use/DefaultConfiguration.html | 62 +
.../class-use/DefaultReliabilityStrategy.html | 62 +
.../log4j/core/config/class-use/HttpWatcher.html | 62 +
.../LocationAwareReliabilityStrategy.html | 107 +
.../class-use/LockingReliabilityStrategy.html | 62 +
.../config/class-use/LoggerConfig.Builder.html | 118 +
.../class-use/LoggerConfig.LevelAndRefs.html | 92 +
.../LoggerConfig.LoggerConfigPredicate.html | 134 +
.../class-use/LoggerConfig.RootLogger.Builder.html | 118 +
.../config/class-use/LoggerConfig.RootLogger.html | 62 +
.../log4j/core/config/class-use/LoggerConfig.html | 570 +
.../core/config/class-use/LoggerContextAware.html | 91 +
.../log4j/core/config/class-use/Loggers.html | 91 +
.../log4j/core/config/class-use/LoggersPlugin.html | 62 +
.../logging/log4j/core/config/class-use/Node.html | 404 +
.../core/config/class-use/NullConfiguration.html | 62 +
.../logging/log4j/core/config/class-use/Order.html | 147 +
.../core/config/class-use/OrderComparator.html | 62 +
.../core/config/class-use/PropertiesPlugin.html | 62 +
.../log4j/core/config/class-use/Property.html | 845 +
.../core/config/class-use/Reconfigurable.html | 304 +
.../core/config/class-use/ReliabilityStrategy.html | 131 +
.../class-use/ReliabilityStrategyFactory.html | 62 +
.../log4j/core/config/class-use/Scheduled.html | 111 +
.../log4j/core/config/class-use/ScriptsPlugin.html | 62 +
.../config/composite/CompositeConfiguration.html | 288 +
.../config/composite/DefaultMergeStrategy.html | 225 +
.../log4j/core/config/composite/MergeStrategy.html | 165 +
.../class-use/CompositeConfiguration.html | 62 +
.../composite/class-use/DefaultMergeStrategy.html | 62 +
.../config/composite/class-use/MergeStrategy.html | 91 +
.../core/config/composite/package-summary.html | 121 +
.../log4j/core/config/composite/package-tree.html | 95 +
.../log4j/core/config/composite/package-use.html | 88 +
.../log4j/core/config/json/JsonConfiguration.html | 262 +
.../core/config/json/JsonConfigurationFactory.html | 216 +
.../config/json/class-use/JsonConfiguration.html | 89 +
.../json/class-use/JsonConfigurationFactory.html | 62 +
.../log4j/core/config/json/package-summary.html | 109 +
.../log4j/core/config/json/package-tree.html | 97 +
.../log4j/core/config/json/package-use.html | 88 +
.../logging/log4j/core/config/package-summary.html | 310 +
.../logging/log4j/core/config/package-tree.html | 186 +
.../logging/log4j/core/config/package-use.html | 956 +
.../logging/log4j/core/config/plugins/Plugin.html | 244 +
.../log4j/core/config/plugins/PluginAliases.html | 123 +
.../log4j/core/config/plugins/PluginAttribute.html | 327 +
.../config/plugins/PluginBuilderAttribute.html | 149 +
.../core/config/plugins/PluginBuilderFactory.html | 86 +
.../core/config/plugins/PluginConfiguration.html | 95 +
.../log4j/core/config/plugins/PluginElement.html | 127 +
.../log4j/core/config/plugins/PluginFactory.html | 90 +
.../core/config/plugins/PluginLoggerContext.html | 95 +
.../log4j/core/config/plugins/PluginNode.html | 87 +
.../log4j/core/config/plugins/PluginValue.html | 168 +
.../core/config/plugins/PluginVisitorStrategy.html | 130 +
.../core/config/plugins/class-use/Plugin.html | 1594 ++
.../config/plugins/class-use/PluginAliases.html | 165 +
.../config/plugins/class-use/PluginAttribute.html | 2755 +++
.../plugins/class-use/PluginBuilderAttribute.html | 98 +
.../plugins/class-use/PluginBuilderFactory.html | 512 +
.../plugins/class-use/PluginConfiguration.html | 455 +
.../config/plugins/class-use/PluginElement.html | 850 +
.../config/plugins/class-use/PluginFactory.html | 787 +
.../plugins/class-use/PluginLoggerContext.html | 62 +
.../core/config/plugins/class-use/PluginNode.html | 93 +
.../core/config/plugins/class-use/PluginValue.html | 113 +
.../plugins/class-use/PluginVisitorStrategy.html | 121 +
.../config/plugins/convert/Base64Converter.html | 167 +
.../config/plugins/convert/DateTypeConverter.html | 151 +
.../core/config/plugins/convert/EnumConverter.html | 189 +
.../core/config/plugins/convert/HexConverter.html | 169 +
.../core/config/plugins/convert/TypeConverter.html | 154 +
.../plugins/convert/TypeConverterRegistry.html | 172 +
.../TypeConverters.BigDecimalConverter.html | 187 +
.../TypeConverters.BigIntegerConverter.html | 187 +
.../convert/TypeConverters.BooleanConverter.html | 187 +
.../convert/TypeConverters.ByteArrayConverter.html | 194 +
.../convert/TypeConverters.ByteConverter.html | 187 +
.../convert/TypeConverters.CharArrayConverter.html | 187 +
.../convert/TypeConverters.CharacterConverter.html | 187 +
.../convert/TypeConverters.CharsetConverter.html | 187 +
.../convert/TypeConverters.ClassConverter.html | 190 +
.../TypeConverters.CronExpressionConverter.html | 189 +
.../convert/TypeConverters.DoubleConverter.html | 187 +
.../convert/TypeConverters.DurationConverter.html | 200 +
.../convert/TypeConverters.FileConverter.html | 187 +
.../convert/TypeConverters.FloatConverter.html | 187 +
.../TypeConverters.InetAddressConverter.html | 190 +
.../convert/TypeConverters.IntegerConverter.html | 187 +
.../convert/TypeConverters.LevelConverter.html | 187 +
.../convert/TypeConverters.LongConverter.html | 187 +
.../convert/TypeConverters.PathConverter.html | 194 +
.../convert/TypeConverters.PatternConverter.html | 187 +
.../TypeConverters.SecurityProviderConverter.html | 187 +
.../convert/TypeConverters.ShortConverter.html | 187 +
.../convert/TypeConverters.StringConverter.html | 187 +
.../convert/TypeConverters.UriConverter.html | 190 +
.../convert/TypeConverters.UrlConverter.html | 190 +
.../convert/TypeConverters.UuidConverter.html | 194 +
.../config/plugins/convert/TypeConverters.html | 373 +
.../plugins/convert/class-use/Base64Converter.html | 62 +
.../convert/class-use/DateTypeConverter.html | 62 +
.../plugins/convert/class-use/EnumConverter.html | 62 +
.../plugins/convert/class-use/HexConverter.html | 62 +
.../plugins/convert/class-use/TypeConverter.html | 233 +
.../convert/class-use/TypeConverterRegistry.html | 91 +
.../TypeConverters.BigDecimalConverter.html | 62 +
.../TypeConverters.BigIntegerConverter.html | 62 +
.../class-use/TypeConverters.BooleanConverter.html | 62 +
.../TypeConverters.ByteArrayConverter.html | 62 +
.../class-use/TypeConverters.ByteConverter.html | 62 +
.../TypeConverters.CharArrayConverter.html | 62 +
.../TypeConverters.CharacterConverter.html | 62 +
.../class-use/TypeConverters.CharsetConverter.html | 62 +
.../class-use/TypeConverters.ClassConverter.html | 62 +
.../TypeConverters.CronExpressionConverter.html | 62 +
.../class-use/TypeConverters.DoubleConverter.html | 62 +
.../TypeConverters.DurationConverter.html | 62 +
.../class-use/TypeConverters.FileConverter.html | 62 +
.../class-use/TypeConverters.FloatConverter.html | 62 +
.../TypeConverters.InetAddressConverter.html | 62 +
.../class-use/TypeConverters.IntegerConverter.html | 62 +
.../class-use/TypeConverters.LevelConverter.html | 62 +
.../class-use/TypeConverters.LongConverter.html | 62 +
.../class-use/TypeConverters.PathConverter.html | 62 +
.../class-use/TypeConverters.PatternConverter.html | 62 +
.../TypeConverters.SecurityProviderConverter.html | 62 +
.../class-use/TypeConverters.ShortConverter.html | 62 +
.../class-use/TypeConverters.StringConverter.html | 62 +
.../class-use/TypeConverters.UriConverter.html | 62 +
.../class-use/TypeConverters.UrlConverter.html | 62 +
.../class-use/TypeConverters.UuidConverter.html | 62 +
.../plugins/convert/class-use/TypeConverters.html | 62 +
.../config/plugins/convert/package-summary.html | 254 +
.../core/config/plugins/convert/package-tree.html | 113 +
.../core/config/plugins/convert/package-use.html | 92 +
.../log4j/core/config/plugins/package-summary.html | 172 +
.../log4j/core/config/plugins/package-tree.html | 83 +
.../log4j/core/config/plugins/package-use.html | 839 +
.../core/config/plugins/processor/PluginCache.html | 244 +
.../core/config/plugins/processor/PluginEntry.html | 289 +
.../config/plugins/processor/PluginProcessor.html | 241 +
.../plugins/processor/class-use/PluginCache.html | 62 +
.../plugins/processor/class-use/PluginEntry.html | 116 +
.../processor/class-use/PluginProcessor.html | 62 +
.../config/plugins/processor/package-summary.html | 130 +
.../config/plugins/processor/package-tree.html | 82 +
.../core/config/plugins/processor/package-use.html | 105 +
.../core/config/plugins/util/PluginBuilder.html | 254 +
.../core/config/plugins/util/PluginManager.html | 283 +
.../plugins/util/PluginRegistry.PluginTest.html | 251 +
.../core/config/plugins/util/PluginRegistry.html | 242 +
.../log4j/core/config/plugins/util/PluginType.html | 250 +
.../log4j/core/config/plugins/util/PluginUtil.html | 194 +
.../config/plugins/util/ResolverUtil.Test.html | 185 +
.../core/config/plugins/util/ResolverUtil.html | 336 +
.../plugins/util/class-use/PluginBuilder.html | 101 +
.../plugins/util/class-use/PluginManager.html | 156 +
.../util/class-use/PluginRegistry.PluginTest.html | 62 +
.../plugins/util/class-use/PluginRegistry.html | 91 +
.../config/plugins/util/class-use/PluginType.html | 187 +
.../config/plugins/util/class-use/PluginUtil.html | 62 +
.../plugins/util/class-use/ResolverUtil.Test.html | 116 +
.../plugins/util/class-use/ResolverUtil.html | 62 +
.../core/config/plugins/util/package-summary.html | 160 +
.../core/config/plugins/util/package-tree.html | 88 +
.../core/config/plugins/util/package-use.html | 157 +
.../core/config/plugins/validation/Constraint.html | 131 +
.../plugins/validation/ConstraintValidator.html | 170 +
.../plugins/validation/ConstraintValidators.html | 151 +
.../plugins/validation/class-use/Constraint.html | 107 +
.../validation/class-use/ConstraintValidator.html | 127 +
.../validation/class-use/ConstraintValidators.html | 62 +
.../plugins/validation/constraints/NotBlank.html | 137 +
.../plugins/validation/constraints/Required.html | 136 +
.../plugins/validation/constraints/ValidHost.html | 136 +
.../plugins/validation/constraints/ValidPort.html | 136 +
.../validation/constraints/class-use/NotBlank.html | 89 +
.../validation/constraints/class-use/Required.html | 272 +
.../constraints/class-use/ValidHost.html | 89 +
.../constraints/class-use/ValidPort.html | 128 +
.../validation/constraints/package-summary.html | 128 +
.../validation/constraints/package-tree.html | 75 +
.../validation/constraints/package-use.html | 207 +
.../config/plugins/validation/package-summary.html | 149 +
.../config/plugins/validation/package-tree.html | 88 +
.../config/plugins/validation/package-use.html | 122 +
.../validation/validators/NotBlankValidator.html | 208 +
.../validation/validators/RequiredValidator.html | 214 +
.../validation/validators/ValidHostValidator.html | 208 +
.../validation/validators/ValidPortValidator.html | 207 +
.../validators/class-use/NotBlankValidator.html | 62 +
.../validators/class-use/RequiredValidator.html | 62 +
.../validators/class-use/ValidHostValidator.html | 62 +
.../validators/class-use/ValidPortValidator.html | 62 +
.../validation/validators/package-summary.html | 128 +
.../validation/validators/package-tree.html | 79 +
.../plugins/validation/validators/package-use.html | 62 +
.../plugins/visitors/AbstractPluginVisitor.html | 422 +
.../plugins/visitors/PluginAttributeVisitor.html | 201 +
.../visitors/PluginBuilderAttributeVisitor.html | 211 +
.../visitors/PluginConfigurationVisitor.html | 201 +
.../plugins/visitors/PluginElementVisitor.html | 201 +
.../visitors/PluginLoggerContextVisitor.html | 201 +
.../config/plugins/visitors/PluginNodeVisitor.html | 201 +
.../plugins/visitors/PluginValueVisitor.html | 201 +
.../config/plugins/visitors/PluginVisitor.html | 258 +
.../config/plugins/visitors/PluginVisitors.html | 149 +
.../visitors/class-use/AbstractPluginVisitor.html | 121 +
.../visitors/class-use/PluginAttributeVisitor.html | 62 +
.../class-use/PluginBuilderAttributeVisitor.html | 62 +
.../class-use/PluginConfigurationVisitor.html | 62 +
.../visitors/class-use/PluginElementVisitor.html | 62 +
.../class-use/PluginLoggerContextVisitor.html | 62 +
.../visitors/class-use/PluginNodeVisitor.html | 62 +
.../visitors/class-use/PluginValueVisitor.html | 62 +
.../plugins/visitors/class-use/PluginVisitor.html | 178 +
.../plugins/visitors/class-use/PluginVisitors.html | 62 +
.../config/plugins/visitors/package-summary.html | 169 +
.../core/config/plugins/visitors/package-tree.html | 93 +
.../core/config/plugins/visitors/package-use.html | 93 +
.../config/properties/PropertiesConfiguration.html | 237 +
.../properties/PropertiesConfigurationBuilder.html | 228 +
.../properties/PropertiesConfigurationFactory.html | 208 +
.../class-use/PropertiesConfiguration.html | 93 +
.../class-use/PropertiesConfigurationBuilder.html | 95 +
.../class-use/PropertiesConfigurationFactory.html | 62 +
.../core/config/properties/package-summary.html | 115 +
.../log4j/core/config/properties/package-tree.html | 102 +
.../log4j/core/config/properties/package-use.html | 92 +
.../status/StatusConfiguration.Verbosity.html | 256 +
.../core/config/status/StatusConfiguration.html | 325 +
.../class-use/StatusConfiguration.Verbosity.html | 106 +
.../status/class-use/StatusConfiguration.html | 133 +
.../log4j/core/config/status/package-summary.html | 117 +
.../log4j/core/config/status/package-tree.html | 90 +
.../log4j/core/config/status/package-use.html | 111 +
.../log4j/core/config/xml/XmlConfiguration.html | 249 +
.../core/config/xml/XmlConfigurationFactory.html | 243 +
.../config/xml/class-use/XmlConfiguration.html | 62 +
.../xml/class-use/XmlConfigurationFactory.html | 62 +
.../log4j/core/config/xml/package-summary.html | 111 +
.../log4j/core/config/xml/package-tree.html | 97 +
.../logging/log4j/core/config/xml/package-use.html | 62 +
.../log4j/core/config/yaml/YamlConfiguration.html | 241 +
.../core/config/yaml/YamlConfigurationFactory.html | 216 +
.../config/yaml/class-use/YamlConfiguration.html | 62 +
.../yaml/class-use/YamlConfigurationFactory.html | 62 +
.../log4j/core/config/yaml/package-summary.html | 107 +
.../log4j/core/config/yaml/package-tree.html | 101 +
.../log4j/core/config/yaml/package-use.html | 62 +
.../AbstractFilter.AbstractFilterBuilder.html | 279 +
.../logging/log4j/core/filter/AbstractFilter.html | 944 +
.../core/filter/AbstractFilterable.Builder.html | 236 +
.../log4j/core/filter/AbstractFilterable.html | 387 +
.../log4j/core/filter/BurstFilter.Builder.html | 255 +
.../logging/log4j/core/filter/BurstFilter.html | 870 +
.../logging/log4j/core/filter/CompositeFilter.html | 944 +
.../log4j/core/filter/DenyAllFilter.Builder.html | 200 +
.../logging/log4j/core/filter/DenyAllFilter.html | 827 +
.../log4j/core/filter/DynamicThresholdFilter.html | 890 +
.../logging/log4j/core/filter/Filterable.html | 232 +
.../core/filter/LevelMatchFilter.Builder.html | 218 +
.../log4j/core/filter/LevelMatchFilter.html | 859 +
.../log4j/core/filter/LevelRangeFilter.html | 934 +
.../logging/log4j/core/filter/MapFilter.html | 868 +
.../logging/log4j/core/filter/MarkerFilter.html | 868 +
.../MutableThreadContextMapFilter.Builder.html | 256 +
...ontextMapFilter.FilterConfigUpdateListener.html | 133 +
.../core/filter/MutableThreadContextMapFilter.html | 870 +
.../log4j/core/filter/NoMarkerFilter.Builder.html | 200 +
.../logging/log4j/core/filter/NoMarkerFilter.html | 814 +
.../logging/log4j/core/filter/RegexFilter.html | 364 +
.../logging/log4j/core/filter/ScriptFilter.html | 356 +
.../core/filter/StringMatchFilter.Builder.html | 218 +
.../log4j/core/filter/StringMatchFilter.html | 859 +
.../log4j/core/filter/StructuredDataFilter.html | 286 +
.../log4j/core/filter/ThreadContextMapFilter.html | 854 +
.../logging/log4j/core/filter/ThresholdFilter.html | 850 +
.../logging/log4j/core/filter/TimeFilter.html | 844 +
.../AbstractFilter.AbstractFilterBuilder.html | 113 +
.../core/filter/class-use/AbstractFilter.html | 170 +
.../class-use/AbstractFilterable.Builder.html | 296 +
.../core/filter/class-use/AbstractFilterable.html | 544 +
.../core/filter/class-use/BurstFilter.Builder.html | 104 +
.../log4j/core/filter/class-use/BurstFilter.html | 89 +
.../core/filter/class-use/CompositeFilter.html | 97 +
.../filter/class-use/DenyAllFilter.Builder.html | 89 +
.../log4j/core/filter/class-use/DenyAllFilter.html | 89 +
.../filter/class-use/DynamicThresholdFilter.html | 95 +
.../log4j/core/filter/class-use/Filterable.html | 575 +
.../filter/class-use/LevelMatchFilter.Builder.html | 94 +
.../core/filter/class-use/LevelMatchFilter.html | 89 +
.../core/filter/class-use/LevelRangeFilter.html | 94 +
.../log4j/core/filter/class-use/MapFilter.html | 108 +
.../log4j/core/filter/class-use/MarkerFilter.html | 93 +
.../MutableThreadContextMapFilter.Builder.html | 105 +
...ontextMapFilter.FilterConfigUpdateListener.html | 89 +
.../class-use/MutableThreadContextMapFilter.html | 89 +
.../filter/class-use/NoMarkerFilter.Builder.html | 89 +
.../core/filter/class-use/NoMarkerFilter.html | 89 +
.../log4j/core/filter/class-use/RegexFilter.html | 95 +
.../log4j/core/filter/class-use/ScriptFilter.html | 94 +
.../class-use/StringMatchFilter.Builder.html | 94 +
.../core/filter/class-use/StringMatchFilter.html | 89 +
.../filter/class-use/StructuredDataFilter.html | 94 +
.../filter/class-use/ThreadContextMapFilter.html | 92 +
.../core/filter/class-use/ThresholdFilter.html | 93 +
.../log4j/core/filter/class-use/TimeFilter.html | 95 +
.../core/filter/mutable/KeyValuePairConfig.html | 173 +
.../mutable/class-use/KeyValuePairConfig.html | 62 +
.../log4j/core/filter/mutable/package-summary.html | 104 +
.../log4j/core/filter/mutable/package-tree.html | 76 +
.../log4j/core/filter/mutable/package-use.html | 62 +
.../logging/log4j/core/filter/package-summary.html | 219 +
.../logging/log4j/core/filter/package-tree.html | 126 +
.../logging/log4j/core/filter/package-use.html | 570 +
.../logging/log4j/core/impl/ContextAnchor.html | 138 +
.../log4j/core/impl/ContextDataFactory.html | 226 +
.../core/impl/ContextDataInjectorFactory.html | 212 +
.../log4j/core/impl/DefaultLogEventFactory.html | 250 +
.../logging/log4j/core/impl/ExtendedClassInfo.html | 258 +
.../log4j/core/impl/ExtendedStackTraceElement.html | 330 +
.../log4j/core/impl/JdkMapAdapterStringMap.html | 427 +
.../logging/log4j/core/impl/LocationAware.html | 134 +
.../core/impl/LocationAwareLogEventFactory.html | 151 +
.../log4j/core/impl/Log4jContextFactory.html | 539 +
.../log4j/core/impl/Log4jLogEvent.Builder.html | 380 +
.../logging/log4j/core/impl/Log4jLogEvent.html | 1096 +
.../logging/log4j/core/impl/Log4jProvider.html | 196 +
.../logging/log4j/core/impl/LogEventFactory.html | 177 +
.../logging/log4j/core/impl/MementoMessage.html | 261 +
.../logging/log4j/core/impl/MutableLogEvent.html | 1018 +
.../log4j/core/impl/ReusableLogEventFactory.html | 264 +
...ataInjector.ForCopyOnWriteThreadContextMap.html | 246 +
...extDataInjector.ForDefaultThreadContextMap.html | 243 +
...ataInjector.ForGarbageFreeThreadContextMap.html | 243 +
.../log4j/core/impl/ThreadContextDataInjector.html | 274 +
.../log4j/core/impl/ThreadContextDataProvider.html | 209 +
.../log4j/core/impl/ThrowableFormatOptions.html | 508 +
.../logging/log4j/core/impl/ThrowableProxy.html | 693 +
.../log4j/core/impl/class-use/ContextAnchor.html | 62 +
.../core/impl/class-use/ContextDataFactory.html | 62 +
.../impl/class-use/ContextDataInjectorFactory.html | 62 +
.../impl/class-use/DefaultLogEventFactory.html | 89 +
.../core/impl/class-use/ExtendedClassInfo.html | 99 +
.../impl/class-use/ExtendedStackTraceElement.html | 91 +
.../impl/class-use/JdkMapAdapterStringMap.html | 62 +
.../log4j/core/impl/class-use/LocationAware.html | 537 +
.../class-use/LocationAwareLogEventFactory.html | 105 +
.../core/impl/class-use/Log4jContextFactory.html | 62 +
.../core/impl/class-use/Log4jLogEvent.Builder.html | 188 +
.../log4j/core/impl/class-use/Log4jLogEvent.html | 139 +
.../log4j/core/impl/class-use/Log4jProvider.html | 62 +
.../log4j/core/impl/class-use/LogEventFactory.html | 151 +
.../log4j/core/impl/class-use/MementoMessage.html | 62 +
.../log4j/core/impl/class-use/MutableLogEvent.html | 89 +
.../impl/class-use/ReusableLogEventFactory.html | 62 +
...ataInjector.ForCopyOnWriteThreadContextMap.html | 62 +
...extDataInjector.ForDefaultThreadContextMap.html | 62 +
...ataInjector.ForGarbageFreeThreadContextMap.html | 62 +
.../impl/class-use/ThreadContextDataInjector.html | 62 +
.../impl/class-use/ThreadContextDataProvider.html | 62 +
.../impl/class-use/ThrowableFormatOptions.html | 131 +
.../log4j/core/impl/class-use/ThrowableProxy.html | 206 +
.../logging/log4j/core/impl/package-summary.html | 209 +
.../logging/log4j/core/impl/package-tree.html | 111 +
.../logging/log4j/core/impl/package-use.html | 375 +
.../ContextDataAsEntryListDeserializer.html | 188 +
.../jackson/ContextDataAsEntryListSerializer.html | 221 +
.../core/jackson/ContextDataDeserializer.html | 188 +
.../log4j/core/jackson/ContextDataSerializer.html | 221 +
.../logging/log4j/core/jackson/JsonConstants.html | 432 +
.../core/jackson/ListOfMapEntryDeserializer.html | 190 +
.../core/jackson/ListOfMapEntrySerializer.html | 221 +
.../log4j/core/jackson/Log4jJsonObjectMapper.html | 198 +
.../Log4jStackTraceElementDeserializer.html | 225 +
.../log4j/core/jackson/Log4jXmlObjectMapper.html | 205 +
.../log4j/core/jackson/Log4jYamlObjectMapper.html | 204 +
.../logging/log4j/core/jackson/MapEntry.html | 238 +
.../core/jackson/SimpleMessageDeserializer.html | 195 +
.../core/jackson/StackTraceElementConstants.html | 272 +
.../logging/log4j/core/jackson/XmlConstants.html | 442 +
.../ContextDataAsEntryListDeserializer.html | 62 +
.../ContextDataAsEntryListSerializer.html | 62 +
.../jackson/class-use/ContextDataDeserializer.html | 62 +
.../jackson/class-use/ContextDataSerializer.html | 62 +
.../core/jackson/class-use/JsonConstants.html | 62 +
.../class-use/ListOfMapEntryDeserializer.html | 62 +
.../class-use/ListOfMapEntrySerializer.html | 62 +
.../jackson/class-use/Log4jJsonObjectMapper.html | 62 +
.../Log4jStackTraceElementDeserializer.html | 62 +
.../jackson/class-use/Log4jXmlObjectMapper.html | 62 +
.../jackson/class-use/Log4jYamlObjectMapper.html | 62 +
.../log4j/core/jackson/class-use/MapEntry.html | 62 +
.../class-use/SimpleMessageDeserializer.html | 62 +
.../class-use/StackTraceElementConstants.html | 62 +
.../log4j/core/jackson/class-use/XmlConstants.html | 62 +
.../log4j/core/jackson/package-summary.html | 172 +
.../logging/log4j/core/jackson/package-tree.html | 130 +
.../logging/log4j/core/jackson/package-use.html | 62 +
.../logging/log4j/core/jmx/AppenderAdmin.html | 310 +
.../logging/log4j/core/jmx/AppenderAdminMBean.html | 279 +
.../logging/log4j/core/jmx/AsyncAppenderAdmin.html | 416 +
.../log4j/core/jmx/AsyncAppenderAdminMBean.html | 372 +
.../log4j/core/jmx/ContextSelectorAdmin.html | 228 +
.../log4j/core/jmx/ContextSelectorAdminMBean.html | 203 +
.../logging/log4j/core/jmx/LoggerConfigAdmin.html | 364 +
.../log4j/core/jmx/LoggerConfigAdminMBean.html | 328 +
.../logging/log4j/core/jmx/LoggerContextAdmin.html | 470 +
.../log4j/core/jmx/LoggerContextAdminMBean.html | 441 +
.../logging/log4j/core/jmx/RingBufferAdmin.html | 261 +
.../log4j/core/jmx/RingBufferAdminMBean.html | 244 +
.../org/apache/logging/log4j/core/jmx/Server.html | 276 +
.../logging/log4j/core/jmx/StatusLoggerAdmin.html | 443 +
.../log4j/core/jmx/StatusLoggerAdminMBean.html | 344 +
.../log4j/core/jmx/class-use/AppenderAdmin.html | 62 +
.../core/jmx/class-use/AppenderAdminMBean.html | 91 +
.../core/jmx/class-use/AsyncAppenderAdmin.html | 62 +
.../jmx/class-use/AsyncAppenderAdminMBean.html | 91 +
.../core/jmx/class-use/ContextSelectorAdmin.html | 62 +
.../jmx/class-use/ContextSelectorAdminMBean.html | 91 +
.../core/jmx/class-use/LoggerConfigAdmin.html | 62 +
.../core/jmx/class-use/LoggerConfigAdminMBean.html | 91 +
.../core/jmx/class-use/LoggerContextAdmin.html | 62 +
.../jmx/class-use/LoggerContextAdminMBean.html | 91 +
.../log4j/core/jmx/class-use/RingBufferAdmin.html | 133 +
.../core/jmx/class-use/RingBufferAdminMBean.html | 91 +
.../logging/log4j/core/jmx/class-use/Server.html | 62 +
.../core/jmx/class-use/StatusLoggerAdmin.html | 62 +
.../core/jmx/class-use/StatusLoggerAdminMBean.html | 91 +
.../logging/log4j/core/jmx/package-summary.html | 170 +
.../logging/log4j/core/jmx/package-tree.html | 99 +
.../apache/logging/log4j/core/jmx/package-use.html | 134 +
.../log4j/core/layout/AbstractCsvLayout.html | 318 +
.../log4j/core/layout/AbstractLayout.Builder.html | 230 +
.../logging/log4j/core/layout/AbstractLayout.html | 433 +
.../core/layout/AbstractStringLayout.Builder.html | 221 +
.../layout/AbstractStringLayout.Serializer.html | 153 +
.../layout/AbstractStringLayout.Serializer2.html | 145 +
.../log4j/core/layout/AbstractStringLayout.html | 507 +
.../log4j/core/layout/ByteBufferDestination.html | 218 +
.../core/layout/ByteBufferDestinationHelper.html | 178 +
.../log4j/core/layout/CsvLogEventLayout.html | 305 +
.../log4j/core/layout/CsvParameterLayout.html | 311 +
.../apache/logging/log4j/core/layout/Encoder.html | 159 +
.../log4j/core/layout/GelfLayout.Builder.html | 558 +
.../core/layout/GelfLayout.CompressionType.html | 239 +
.../logging/log4j/core/layout/GelfLayout.html | 445 +
.../log4j/core/layout/HtmlLayout.Builder.html | 231 +
.../log4j/core/layout/HtmlLayout.FontSize.html | 301 +
.../logging/log4j/core/layout/HtmlLayout.html | 414 +
.../log4j/core/layout/JsonLayout.Builder.html | 269 +
.../logging/log4j/core/layout/JsonLayout.html | 592 +
.../core/layout/LevelPatternSelector.Builder.html | 241 +
.../log4j/core/layout/LevelPatternSelector.html | 298 +
.../core/layout/LockingStringBuilderEncoder.html | 194 +
.../logging/log4j/core/layout/LoggerFields.html | 203 +
.../core/layout/MarkerPatternSelector.Builder.html | 241 +
.../log4j/core/layout/MarkerPatternSelector.html | 298 +
.../logging/log4j/core/layout/MessageLayout.html | 270 +
.../log4j/core/layout/PatternLayout.Builder.html | 291 +
.../layout/PatternLayout.SerializerBuilder.html | 258 +
.../logging/log4j/core/layout/PatternLayout.html | 643 +
.../log4j/core/layout/PatternMatch.Builder.html | 226 +
.../logging/log4j/core/layout/PatternMatch.html | 268 +
.../logging/log4j/core/layout/PatternSelector.html | 171 +
.../layout/Rfc5424Layout.Rfc5424LayoutBuilder.html | 379 +
.../logging/log4j/core/layout/Rfc5424Layout.html | 515 +
.../core/layout/ScriptPatternSelector.Builder.html | 223 +
.../log4j/core/layout/ScriptPatternSelector.html | 307 +
.../log4j/core/layout/SerializedLayout.html | 268 +
.../log4j/core/layout/StringBuilderEncoder.html | 196 +
.../log4j/core/layout/SyslogLayout.Builder.html | 262 +
.../logging/log4j/core/layout/SyslogLayout.html | 349 +
.../log4j/core/layout/TextEncoderHelper.html | 179 +
.../log4j/core/layout/XmlLayout.Builder.html | 201 +
.../logging/log4j/core/layout/XmlLayout.html | 569 +
.../log4j/core/layout/YamlLayout.Builder.html | 201 +
.../logging/log4j/core/layout/YamlLayout.html | 558 +
.../core/layout/class-use/AbstractCsvLayout.html | 121 +
.../layout/class-use/AbstractLayout.Builder.html | 123 +
.../core/layout/class-use/AbstractLayout.html | 159 +
.../class-use/AbstractStringLayout.Builder.html | 118 +
.../class-use/AbstractStringLayout.Serializer.html | 192 +
.../AbstractStringLayout.Serializer2.html | 89 +
.../layout/class-use/AbstractStringLayout.html | 142 +
.../layout/class-use/ByteBufferDestination.html | 244 +
.../class-use/ByteBufferDestinationHelper.html | 62 +
.../core/layout/class-use/CsvLogEventLayout.html | 105 +
.../core/layout/class-use/CsvParameterLayout.html | 62 +
.../log4j/core/layout/class-use/Encoder.html | 210 +
.../core/layout/class-use/GelfLayout.Builder.html | 98 +
.../class-use/GelfLayout.CompressionType.html | 139 +
.../log4j/core/layout/class-use/GelfLayout.html | 100 +
.../core/layout/class-use/HtmlLayout.Builder.html | 113 +
.../core/layout/class-use/HtmlLayout.FontSize.html | 112 +
.../log4j/core/layout/class-use/HtmlLayout.html | 104 +
.../core/layout/class-use/JsonLayout.Builder.html | 98 +
.../log4j/core/layout/class-use/JsonLayout.html | 111 +
.../class-use/LevelPatternSelector.Builder.html | 109 +
.../layout/class-use/LevelPatternSelector.html | 100 +
.../class-use/LockingStringBuilderEncoder.html | 62 +
.../log4j/core/layout/class-use/LoggerFields.html | 191 +
.../class-use/MarkerPatternSelector.Builder.html | 109 +
.../layout/class-use/MarkerPatternSelector.html | 100 +
.../log4j/core/layout/class-use/MessageLayout.html | 62 +
.../layout/class-use/PatternLayout.Builder.html | 121 +
.../class-use/PatternLayout.SerializerBuilder.html | 113 +
.../log4j/core/layout/class-use/PatternLayout.html | 132 +
.../layout/class-use/PatternMatch.Builder.html | 95 +
.../log4j/core/layout/class-use/PatternMatch.html | 179 +
.../core/layout/class-use/PatternSelector.html | 146 +
.../Rfc5424Layout.Rfc5424LayoutBuilder.html | 150 +
.../log4j/core/layout/class-use/Rfc5424Layout.html | 113 +
.../class-use/ScriptPatternSelector.Builder.html | 112 +
.../layout/class-use/ScriptPatternSelector.html | 101 +
.../core/layout/class-use/SerializedLayout.html | 91 +
.../layout/class-use/StringBuilderEncoder.html | 62 +
.../layout/class-use/SyslogLayout.Builder.html | 100 +
.../log4j/core/layout/class-use/SyslogLayout.html | 99 +
.../core/layout/class-use/TextEncoderHelper.html | 62 +
.../core/layout/class-use/XmlLayout.Builder.html | 98 +
.../log4j/core/layout/class-use/XmlLayout.html | 106 +
.../core/layout/class-use/YamlLayout.Builder.html | 98 +
.../log4j/core/layout/class-use/YamlLayout.html | 89 +
.../logging/log4j/core/layout/package-summary.html | 277 +
.../logging/log4j/core/layout/package-tree.html | 161 +
.../logging/log4j/core/layout/package-use.html | 318 +
.../lookup/AbstractConfigurationAwareLookup.html | 227 +
.../logging/log4j/core/lookup/AbstractLookup.html | 228 +
.../core/lookup/ConfigurationStrSubstitutor.html | 220 +
.../log4j/core/lookup/ContextMapLookup.html | 219 +
.../logging/log4j/core/lookup/DateLookup.html | 218 +
.../log4j/core/lookup/EnvironmentLookup.html | 199 +
.../logging/log4j/core/lookup/EventLookup.html | 199 +
.../logging/log4j/core/lookup/Interpolator.html | 393 +
.../logging/log4j/core/lookup/JavaLookup.html | 279 +
.../lookup/JmxRuntimeInputArgumentsLookup.html | 269 +
.../logging/log4j/core/lookup/JndiLookup.html | 202 +
.../logging/log4j/core/lookup/Log4jLookup.html | 277 +
.../logging/log4j/core/lookup/LookupResult.html | 147 +
.../logging/log4j/core/lookup/LowerLookup.html | 199 +
.../logging/log4j/core/lookup/MainMapLookup.html | 307 +
.../logging/log4j/core/lookup/MapLookup.html | 315 +
.../logging/log4j/core/lookup/MarkerLookup.html | 254 +
.../log4j/core/lookup/PropertiesLookup.html | 308 +
.../log4j/core/lookup/ResourceBundleLookup.html | 201 +
.../log4j/core/lookup/RuntimeStrSubstitutor.html | 218 +
.../logging/log4j/core/lookup/StrLookup.html | 289 +
.../logging/log4j/core/lookup/StrMatcher.html | 460 +
.../logging/log4j/core/lookup/StrSubstitutor.html | 1932 ++
.../log4j/core/lookup/StructuredDataLookup.html | 253 +
.../log4j/core/lookup/SystemPropertiesLookup.html | 199 +
.../logging/log4j/core/lookup/UpperLookup.html | 217 +
.../AbstractConfigurationAwareLookup.html | 96 +
.../core/lookup/class-use/AbstractLookup.html | 146 +
.../class-use/ConfigurationStrSubstitutor.html | 62 +
.../core/lookup/class-use/ContextMapLookup.html | 62 +
.../log4j/core/lookup/class-use/DateLookup.html | 62 +
.../core/lookup/class-use/EnvironmentLookup.html | 62 +
.../log4j/core/lookup/class-use/EventLookup.html | 62 +
.../log4j/core/lookup/class-use/Interpolator.html | 62 +
.../log4j/core/lookup/class-use/JavaLookup.html | 62 +
.../class-use/JmxRuntimeInputArgumentsLookup.html | 89 +
.../log4j/core/lookup/class-use/JndiLookup.html | 62 +
.../log4j/core/lookup/class-use/Log4jLookup.html | 62 +
.../log4j/core/lookup/class-use/LookupResult.html | 124 +
.../log4j/core/lookup/class-use/LowerLookup.html | 62 +
.../log4j/core/lookup/class-use/MainMapLookup.html | 62 +
.../log4j/core/lookup/class-use/MapLookup.html | 96 +
.../log4j/core/lookup/class-use/MarkerLookup.html | 62 +
.../core/lookup/class-use/PropertiesLookup.html | 62 +
.../lookup/class-use/ResourceBundleLookup.html | 62 +
.../lookup/class-use/RuntimeStrSubstitutor.html | 62 +
.../log4j/core/lookup/class-use/StrLookup.html | 311 +
.../log4j/core/lookup/class-use/StrMatcher.html | 243 +
.../core/lookup/class-use/StrSubstitutor.html | 405 +
.../lookup/class-use/StructuredDataLookup.html | 62 +
.../lookup/class-use/SystemPropertiesLookup.html | 62 +
.../log4j/core/lookup/class-use/UpperLookup.html | 62 +
.../logging/log4j/core/lookup/package-summary.html | 215 +
.../logging/log4j/core/lookup/package-tree.html | 118 +
.../logging/log4j/core/lookup/package-use.html | 204 +
.../log4j/core/net/AbstractSocketManager.html | 324 +
.../apache/logging/log4j/core/net/Advertiser.html | 142 +
.../log4j/core/net/DatagramOutputStream.html | 297 +
.../log4j/core/net/DatagramSocketManager.html | 274 +
.../apache/logging/log4j/core/net/Facility.html | 640 +
.../apache/logging/log4j/core/net/JndiManager.html | 432 +
.../log4j/core/net/MailManager.FactoryData.html | 341 +
.../apache/logging/log4j/core/net/MailManager.html | 232 +
.../logging/log4j/core/net/MailManagerFactory.html | 153 +
.../logging/log4j/core/net/MimeMessageBuilder.html | 258 +
.../log4j/core/net/MulticastDnsAdvertiser.html | 243 +
.../apache/logging/log4j/core/net/Priority.html | 247 +
.../apache/logging/log4j/core/net/Protocol.html | 249 +
.../log4j/core/net/Rfc1349TrafficClass.html | 276 +
.../apache/logging/log4j/core/net/Severity.html | 377 +
.../core/net/SmtpManager.SMTPManagerFactory.html | 190 +
.../apache/logging/log4j/core/net/SmtpManager.html | 501 +
.../log4j/core/net/SocketAddress.Builder.html | 204 +
.../logging/log4j/core/net/SocketAddress.html | 225 +
.../logging/log4j/core/net/SocketOptions.html | 625 +
.../core/net/SocketPerformancePreferences.html | 275 +
.../logging/log4j/core/net/SslSocketManager.html | 401 +
.../core/net/TcpSocketManager.HostResolver.html | 206 +
.../TcpSocketManager.TcpSocketManagerFactory.html | 206 +
.../logging/log4j/core/net/TcpSocketManager.html | 585 +
.../log4j/core/net/UrlConnectionFactory.html | 226 +
.../core/net/class-use/AbstractSocketManager.html | 198 +
.../log4j/core/net/class-use/Advertiser.html | 197 +
.../core/net/class-use/DatagramOutputStream.html | 62 +
.../core/net/class-use/DatagramSocketManager.html | 94 +
.../logging/log4j/core/net/class-use/Facility.html | 291 +
.../log4j/core/net/class-use/JndiManager.html | 129 +
.../net/class-use/MailManager.FactoryData.html | 106 +
.../log4j/core/net/class-use/MailManager.html | 119 +
.../core/net/class-use/MailManagerFactory.html | 91 +
.../core/net/class-use/MimeMessageBuilder.html | 99 +
.../core/net/class-use/MulticastDnsAdvertiser.html | 62 +
.../logging/log4j/core/net/class-use/Priority.html | 62 +
.../logging/log4j/core/net/class-use/Protocol.html | 180 +
.../core/net/class-use/Rfc1349TrafficClass.html | 113 +
.../logging/log4j/core/net/class-use/Severity.html | 119 +
.../class-use/SmtpManager.SMTPManagerFactory.html | 89 +
.../log4j/core/net/class-use/SmtpManager.html | 110 +
.../core/net/class-use/SocketAddress.Builder.html | 95 +
.../log4j/core/net/class-use/SocketAddress.html | 94 +
.../log4j/core/net/class-use/SocketOptions.html | 272 +
.../class-use/SocketPerformancePreferences.html | 108 +
.../log4j/core/net/class-use/SslSocketManager.html | 111 +
.../class-use/TcpSocketManager.HostResolver.html | 102 +
.../TcpSocketManager.TcpSocketManagerFactory.html | 62 +
.../log4j/core/net/class-use/TcpSocketManager.html | 131 +
.../core/net/class-use/UrlConnectionFactory.html | 62 +
.../logging/log4j/core/net/package-summary.html | 212 +
.../logging/log4j/core/net/package-tree.html | 144 +
.../apache/logging/log4j/core/net/package-use.html | 240 +
.../net/ssl/AbstractKeyStoreConfiguration.html | 292 +
.../log4j/core/net/ssl/KeyStoreConfiguration.html | 401 +
.../net/ssl/KeyStoreConfigurationException.html | 153 +
.../log4j/core/net/ssl/LaxHostnameVerifier.html | 180 +
.../log4j/core/net/ssl/PasswordProvider.html | 149 +
.../log4j/core/net/ssl/SslConfiguration.html | 293 +
.../core/net/ssl/SslConfigurationDefaults.html | 178 +
.../core/net/ssl/SslConfigurationException.html | 151 +
.../core/net/ssl/SslConfigurationFactory.html | 164 +
.../log4j/core/net/ssl/StoreConfiguration.html | 347 +
.../core/net/ssl/StoreConfigurationException.html | 173 +
.../core/net/ssl/TrustStoreConfiguration.html | 399 +
.../net/ssl/TrustStoreConfigurationException.html | 153 +
.../class-use/AbstractKeyStoreConfiguration.html | 96 +
.../net/ssl/class-use/KeyStoreConfiguration.html | 140 +
.../class-use/KeyStoreConfigurationException.html | 62 +
.../net/ssl/class-use/LaxHostnameVerifier.html | 62 +
.../core/net/ssl/class-use/PasswordProvider.html | 107 +
.../core/net/ssl/class-use/SslConfiguration.html | 405 +
.../ssl/class-use/SslConfigurationDefaults.html | 62 +
.../ssl/class-use/SslConfigurationException.html | 62 +
.../net/ssl/class-use/SslConfigurationFactory.html | 62 +
.../core/net/ssl/class-use/StoreConfiguration.html | 101 +
.../ssl/class-use/StoreConfigurationException.html | 245 +
.../net/ssl/class-use/TrustStoreConfiguration.html | 140 +
.../TrustStoreConfigurationException.html | 62 +
.../log4j/core/net/ssl/package-summary.html | 149 +
.../logging/log4j/core/net/ssl/package-tree.html | 110 +
.../logging/log4j/core/net/ssl/package-use.html | 142 +
.../apache/logging/log4j/core/osgi/Activator.html | 221 +
.../log4j/core/osgi/BundleContextSelector.html | 278 +
.../log4j/core/osgi/class-use/Activator.html | 62 +
.../core/osgi/class-use/BundleContextSelector.html | 62 +
.../logging/log4j/core/osgi/package-summary.html | 111 +
.../logging/log4j/core/osgi/package-tree.html | 85 +
.../logging/log4j/core/osgi/package-use.html | 62 +
.../apache/logging/log4j/core/package-summary.html | 256 +
.../apache/logging/log4j/core/package-tree.html | 136 +
.../org/apache/logging/log4j/core/package-use.html | 1129 +
.../log4j/core/parser/JsonLogEventParser.html | 238 +
.../logging/log4j/core/parser/LogEventParser.html | 178 +
.../logging/log4j/core/parser/ParseException.html | 170 +
.../log4j/core/parser/TextLogEventParser.html | 154 +
.../log4j/core/parser/XmlLogEventParser.html | 238 +
.../log4j/core/parser/YamlLogEventParser.html | 238 +
.../core/parser/class-use/JsonLogEventParser.html | 62 +
.../core/parser/class-use/LogEventParser.html | 112 +
.../core/parser/class-use/ParseException.html | 103 +
.../core/parser/class-use/TextLogEventParser.html | 101 +
.../core/parser/class-use/XmlLogEventParser.html | 62 +
.../core/parser/class-use/YamlLogEventParser.html | 62 +
.../logging/log4j/core/parser/package-summary.html | 133 +
.../logging/log4j/core/parser/package-tree.html | 97 +
.../logging/log4j/core/parser/package-use.html | 96 +
.../core/pattern/AbstractPatternConverter.html | 264 +
.../pattern/AbstractStyleNameConverter.Black.html | 267 +
.../pattern/AbstractStyleNameConverter.Blue.html | 267 +
.../pattern/AbstractStyleNameConverter.Cyan.html | 267 +
.../pattern/AbstractStyleNameConverter.Green.html | 267 +
.../AbstractStyleNameConverter.Magenta.html | 267 +
.../pattern/AbstractStyleNameConverter.Red.html | 267 +
.../pattern/AbstractStyleNameConverter.White.html | 267 +
.../pattern/AbstractStyleNameConverter.Yellow.html | 267 +
.../core/pattern/AbstractStyleNameConverter.html | 299 +
.../logging/log4j/core/pattern/AnsiEscape.html | 1000 +
.../log4j/core/pattern/ArrayPatternConverter.html | 161 +
.../core/pattern/ClassNamePatternConverter.html | 214 +
.../logging/log4j/core/pattern/ConverterKeys.html | 122 +
.../log4j/core/pattern/DatePatternConverter.html | 317 +
.../core/pattern/EncodingPatternConverter.html | 222 +
.../core/pattern/EndOfBatchPatternConverter.html | 199 +
.../pattern/EqualsBaseReplacementConverter.html | 257 +
.../EqualsIgnoreCaseReplacementConverter.html | 212 +
.../core/pattern/EqualsReplacementConverter.html | 212 +
.../pattern/ExtendedThrowablePatternConverter.html | 212 +
.../core/pattern/FileDatePatternConverter.html | 150 +
.../core/pattern/FileLocationPatternConverter.html | 209 +
.../logging/log4j/core/pattern/FormattingInfo.html | 363 +
.../core/pattern/FullLocationPatternConverter.html | 209 +
.../log4j/core/pattern/HighlightConverter.html | 264 +
.../log4j/core/pattern/HtmlTextRenderer.html | 207 +
.../core/pattern/IntegerPatternConverter.html | 216 +
.../log4j/core/pattern/JAnsiTextRenderer.html | 315 +
.../log4j/core/pattern/LevelPatternConverter.html | 223 +
.../core/pattern/LineLocationPatternConverter.html | 209 +
.../pattern/LineSeparatorPatternConverter.html | 231 +
.../core/pattern/LiteralPatternConverter.html | 299 +
.../core/pattern/LogEventPatternConverter.html | 273 +
.../core/pattern/LoggerFqcnPatternConverter.html | 199 +
.../log4j/core/pattern/LoggerPatternConverter.html | 200 +
.../log4j/core/pattern/MapPatternConverter.html | 221 +
.../log4j/core/pattern/MarkerPatternConverter.html | 195 +
.../pattern/MarkerSimpleNamePatternConverter.html | 195 +
.../log4j/core/pattern/MaxLengthConverter.html | 209 +
.../log4j/core/pattern/MdcPatternConverter.html | 214 +
.../core/pattern/MessagePatternConverter.html | 199 +
.../pattern/MethodLocationPatternConverter.html | 209 +
.../log4j/core/pattern/NameAbbreviator.html | 214 +
.../log4j/core/pattern/NamePatternConverter.html | 219 +
.../core/pattern/NanoTimePatternConverter.html | 195 +
.../log4j/core/pattern/NdcPatternConverter.html | 211 +
.../logging/log4j/core/pattern/NotANumber.html | 186 +
.../log4j/core/pattern/PatternConverter.html | 226 +
.../log4j/core/pattern/PatternFormatter.html | 272 +
.../logging/log4j/core/pattern/PatternParser.html | 308 +
.../log4j/core/pattern/PlainTextRenderer.html | 216 +
.../core/pattern/ProcessIdPatternConverter.html | 219 +
.../log4j/core/pattern/RegexReplacement.html | 186 +
.../core/pattern/RegexReplacementConverter.html | 199 +
.../core/pattern/RelativeTimePatternConverter.html | 225 +
.../log4j/core/pattern/RepeatPatternConverter.html | 221 +
.../pattern/RootThrowablePatternConverter.html | 212 +
.../pattern/SequenceNumberPatternConverter.html | 195 +
.../logging/log4j/core/pattern/StyleConverter.html | 245 +
.../logging/log4j/core/pattern/TextRenderer.html | 166 +
.../core/pattern/ThreadIdPatternConverter.html | 199 +
.../core/pattern/ThreadNamePatternConverter.html | 195 +
.../pattern/ThreadPriorityPatternConverter.html | 199 +
.../core/pattern/ThrowablePatternConverter.html | 352 +
.../log4j/core/pattern/UuidPatternConverter.html | 195 +
.../VariablesNotEmptyReplacementConverter.html | 198 +
.../class-use/AbstractPatternConverter.html | 353 +
.../AbstractStyleNameConverter.Black.html | 92 +
.../class-use/AbstractStyleNameConverter.Blue.html | 92 +
.../class-use/AbstractStyleNameConverter.Cyan.html | 92 +
.../AbstractStyleNameConverter.Green.html | 92 +
.../AbstractStyleNameConverter.Magenta.html | 92 +
.../class-use/AbstractStyleNameConverter.Red.html | 92 +
.../AbstractStyleNameConverter.White.html | 92 +
.../AbstractStyleNameConverter.Yellow.html | 92 +
.../class-use/AbstractStyleNameConverter.html | 140 +
.../log4j/core/pattern/class-use/AnsiEscape.html | 97 +
.../pattern/class-use/ArrayPatternConverter.html | 119 +
.../class-use/ClassNamePatternConverter.html | 91 +
.../core/pattern/class-use/ConverterKeys.html | 332 +
.../pattern/class-use/DatePatternConverter.html | 91 +
.../class-use/EncodingPatternConverter.html | 92 +
.../class-use/EndOfBatchPatternConverter.html | 91 +
.../class-use/EqualsBaseReplacementConverter.html | 96 +
.../EqualsIgnoreCaseReplacementConverter.html | 92 +
.../class-use/EqualsReplacementConverter.html | 92 +
.../ExtendedThrowablePatternConverter.html | 92 +
.../class-use/FileDatePatternConverter.html | 62 +
.../class-use/FileLocationPatternConverter.html | 91 +
.../core/pattern/class-use/FormattingInfo.html | 133 +
.../class-use/FullLocationPatternConverter.html | 91 +
.../core/pattern/class-use/HighlightConverter.html | 92 +
.../core/pattern/class-use/HtmlTextRenderer.html | 62 +
.../pattern/class-use/IntegerPatternConverter.html | 91 +
.../core/pattern/class-use/JAnsiTextRenderer.html | 62 +
.../pattern/class-use/LevelPatternConverter.html | 91 +
.../class-use/LineLocationPatternConverter.html | 91 +
.../class-use/LineSeparatorPatternConverter.html | 91 +
.../pattern/class-use/LiteralPatternConverter.html | 62 +
.../class-use/LogEventPatternConverter.html | 361 +
.../class-use/LoggerFqcnPatternConverter.html | 91 +
.../pattern/class-use/LoggerPatternConverter.html | 91 +
.../pattern/class-use/MapPatternConverter.html | 97 +
.../pattern/class-use/MarkerPatternConverter.html | 91 +
.../MarkerSimpleNamePatternConverter.html | 91 +
.../core/pattern/class-use/MaxLengthConverter.html | 92 +
.../pattern/class-use/MdcPatternConverter.html | 91 +
.../pattern/class-use/MessagePatternConverter.html | 92 +
.../class-use/MethodLocationPatternConverter.html | 91 +
.../core/pattern/class-use/NameAbbreviator.html | 96 +
.../pattern/class-use/NamePatternConverter.html | 96 +
.../class-use/NanoTimePatternConverter.html | 91 +
.../pattern/class-use/NdcPatternConverter.html | 91 +
.../log4j/core/pattern/class-use/NotANumber.html | 89 +
.../core/pattern/class-use/PatternConverter.html | 405 +
.../core/pattern/class-use/PatternFormatter.html | 220 +
.../core/pattern/class-use/PatternParser.html | 116 +
.../core/pattern/class-use/PlainTextRenderer.html | 89 +
.../class-use/ProcessIdPatternConverter.html | 91 +
.../core/pattern/class-use/RegexReplacement.html | 141 +
.../class-use/RegexReplacementConverter.html | 92 +
.../class-use/RelativeTimePatternConverter.html | 91 +
.../pattern/class-use/RepeatPatternConverter.html | 92 +
.../class-use/RootThrowablePatternConverter.html | 92 +
.../class-use/SequenceNumberPatternConverter.html | 91 +
.../core/pattern/class-use/StyleConverter.html | 92 +
.../log4j/core/pattern/class-use/TextRenderer.html | 204 +
.../class-use/ThreadIdPatternConverter.html | 91 +
.../class-use/ThreadNamePatternConverter.html | 91 +
.../class-use/ThreadPriorityPatternConverter.html | 91 +
.../class-use/ThrowablePatternConverter.html | 112 +
.../pattern/class-use/UuidPatternConverter.html | 91 +
.../VariablesNotEmptyReplacementConverter.html | 92 +
.../log4j/core/pattern/package-summary.html | 386 +
.../logging/log4j/core/pattern/package-tree.html | 186 +
.../logging/log4j/core/pattern/package-use.html | 407 +
.../logging/log4j/core/script/AbstractScript.html | 236 +
.../apache/logging/log4j/core/script/Script.html | 206 +
.../logging/log4j/core/script/ScriptFile.html | 234 +
.../logging/log4j/core/script/ScriptManager.html | 236 +
.../logging/log4j/core/script/ScriptRef.html | 227 +
.../core/script/class-use/AbstractScript.html | 326 +
.../log4j/core/script/class-use/Script.html | 91 +
.../log4j/core/script/class-use/ScriptFile.html | 93 +
.../log4j/core/script/class-use/ScriptManager.html | 131 +
.../log4j/core/script/class-use/ScriptRef.html | 90 +
.../logging/log4j/core/script/package-summary.html | 123 +
.../logging/log4j/core/script/package-tree.html | 83 +
.../logging/log4j/core/script/package-use.html | 210 +
.../log4j/core/selector/BasicContextSelector.html | 357 +
.../core/selector/ClassLoaderContextSelector.html | 476 +
.../log4j/core/selector/ContextSelector.html | 383 +
.../log4j/core/selector/CoreContextSelectors.html | 161 +
.../log4j/core/selector/JndiContextSelector.html | 444 +
.../log4j/core/selector/NamedContextSelector.html | 184 +
.../selector/class-use/BasicContextSelector.html | 62 +
.../class-use/ClassLoaderContextSelector.html | 111 +
.../core/selector/class-use/ContextSelector.html | 215 +
.../selector/class-use/CoreContextSelectors.html | 62 +
.../selector/class-use/JndiContextSelector.html | 62 +
.../selector/class-use/NamedContextSelector.html | 91 +
.../log4j/core/selector/package-summary.html | 131 +
.../logging/log4j/core/selector/package-tree.html | 89 +
.../logging/log4j/core/selector/package-use.html | 168 +
.../apache/logging/log4j/core/time/Instant.html | 226 +
.../logging/log4j/core/time/MutableInstant.html | 462 +
.../logging/log4j/core/time/PreciseClock.html | 153 +
.../logging/log4j/core/time/class-use/Instant.html | 213 +
.../log4j/core/time/class-use/MutableInstant.html | 107 +
.../log4j/core/time/class-use/PreciseClock.html | 62 +
.../logging/log4j/core/time/package-summary.html | 119 +
.../logging/log4j/core/time/package-tree.html | 91 +
.../logging/log4j/core/time/package-use.html | 179 +
.../core/tools/BasicCommandLineArguments.html | 172 +
.../log4j/core/tools/CustomLoggerGenerator.html | 171 +
.../log4j/core/tools/ExtendedLoggerGenerator.html | 171 +
.../log4j/core/tools/Generate.CustomLogger.html | 152 +
.../log4j/core/tools/Generate.ExtendedLogger.html | 153 +
.../apache/logging/log4j/core/tools/Generate.html | 215 +
.../tools/class-use/BasicCommandLineArguments.html | 62 +
.../tools/class-use/CustomLoggerGenerator.html | 62 +
.../tools/class-use/ExtendedLoggerGenerator.html | 62 +
.../tools/class-use/Generate.CustomLogger.html | 62 +
.../tools/class-use/Generate.ExtendedLogger.html | 62 +
.../log4j/core/tools/class-use/Generate.html | 62 +
.../logging/log4j/core/tools/package-summary.html | 128 +
.../logging/log4j/core/tools/package-tree.html | 81 +
.../logging/log4j/core/tools/package-use.html | 62 +
.../AbstractWatcher.ReconfigurationRunnable.html | 179 +
.../logging/log4j/core/util/AbstractWatcher.html | 318 +
.../apache/logging/log4j/core/util/ArrayUtils.html | 255 +
.../org/apache/logging/log4j/core/util/Assert.html | 233 +
.../log4j/core/util/AuthorizationProvider.html | 134 +
.../core/util/BasicAuthorizationProvider.html | 244 +
.../apache/logging/log4j/core/util/Booleans.html | 153 +
.../apache/logging/log4j/core/util/Builder.html | 187 +
.../logging/log4j/core/util/CachedClock.html | 170 +
.../logging/log4j/core/util/Cancellable.html | 145 +
.../org/apache/logging/log4j/core/util/Clock.html | 145 +
.../logging/log4j/core/util/ClockFactory.html | 204 +
.../log4j/core/util/CloseShieldOutputStream.html | 251 +
.../logging/log4j/core/util/CloseShieldWriter.html | 230 +
.../org/apache/logging/log4j/core/util/Closer.html | 169 +
.../logging/log4j/core/util/CoarseCachedClock.html | 172 +
.../apache/logging/log4j/core/util/Constants.html | 434 +
.../log4j/core/util/ContextDataProvider.html | 188 +
.../logging/log4j/core/util/CronExpression.html | 1079 +
.../logging/log4j/core/util/CyclicBuffer.html | 221 +
.../core/util/DefaultShutdownCallbackRegistry.html | 387 +
.../logging/log4j/core/util/DummyNanoClock.html | 193 +
.../logging/log4j/core/util/ExecutorServices.html | 198 +
.../log4j/core/util/ExtensionLanguageMapping.html | 441 +
.../apache/logging/log4j/core/util/FileUtils.html | 249 +
.../logging/log4j/core/util/FileWatcher.html | 155 +
.../apache/logging/log4j/core/util/IOUtils.html | 321 +
.../apache/logging/log4j/core/util/Integers.html | 194 +
.../apache/logging/log4j/core/util/JndiCloser.html | 179 +
.../apache/logging/log4j/core/util/JsonUtils.html | 169 +
.../log4j/core/util/KeyValuePair.Builder.html | 204 +
.../logging/log4j/core/util/KeyValuePair.html | 300 +
.../org/apache/logging/log4j/core/util/Loader.html | 468 +
.../logging/log4j/core/util/Log4jThread.html | 232 +
.../log4j/core/util/Log4jThreadFactory.html | 230 +
.../apache/logging/log4j/core/util/NameUtil.html | 162 +
.../apache/logging/log4j/core/util/NanoClock.html | 141 +
.../apache/logging/log4j/core/util/NetUtils.html | 222 +
.../logging/log4j/core/util/NullOutputStream.html | 261 +
.../log4j/core/util/ObjectArrayIterator.html | 358 +
.../logging/log4j/core/util/OptionConverter.html | 344 +
.../logging/log4j/core/util/PasswordDecryptor.html | 130 +
.../apache/logging/log4j/core/util/Patterns.html | 218 +
.../logging/log4j/core/util/ReflectionUtil.html | 360 +
.../logging/log4j/core/util/SecretKeyProvider.html | 137 +
.../log4j/core/util/ShutdownCallbackRegistry.html | 228 +
.../org/apache/logging/log4j/core/util/Source.html | 387 +
.../log4j/core/util/StringBuilderWriter.html | 415 +
.../logging/log4j/core/util/StringEncoder.html | 237 +
.../logging/log4j/core/util/SystemClock.html | 178 +
.../logging/log4j/core/util/SystemMillisClock.html | 182 +
.../logging/log4j/core/util/SystemNanoClock.html | 178 +
.../apache/logging/log4j/core/util/Throwables.html | 182 +
.../apache/logging/log4j/core/util/Transform.html | 195 +
.../apache/logging/log4j/core/util/TypeUtil.html | 196 +
.../apache/logging/log4j/core/util/UuidUtil.html | 196 +
.../logging/log4j/core/util/WatchEventService.html | 138 +
.../logging/log4j/core/util/WatchManager.html | 481 +
.../apache/logging/log4j/core/util/Watcher.html | 303 +
.../logging/log4j/core/util/WatcherFactory.html | 173 +
.../log4j/core/util/WrappedFileWatcher.html | 353 +
.../AbstractWatcher.ReconfigurationRunnable.html | 62 +
.../log4j/core/util/class-use/AbstractWatcher.html | 112 +
.../log4j/core/util/class-use/ArrayUtils.html | 62 +
.../logging/log4j/core/util/class-use/Assert.html | 62 +
.../core/util/class-use/AuthorizationProvider.html | 133 +
.../util/class-use/BasicAuthorizationProvider.html | 62 +
.../log4j/core/util/class-use/Booleans.html | 62 +
.../logging/log4j/core/util/class-use/Builder.html | 742 +
.../log4j/core/util/class-use/CachedClock.html | 89 +
.../log4j/core/util/class-use/Cancellable.html | 112 +
.../logging/log4j/core/util/class-use/Clock.html | 193 +
.../log4j/core/util/class-use/ClockFactory.html | 62 +
.../util/class-use/CloseShieldOutputStream.html | 62 +
.../core/util/class-use/CloseShieldWriter.html | 62 +
.../logging/log4j/core/util/class-use/Closer.html | 62 +
.../core/util/class-use/CoarseCachedClock.html | 91 +
.../log4j/core/util/class-use/Constants.html | 62 +
.../core/util/class-use/ContextDataProvider.html | 102 +
.../log4j/core/util/class-use/CronExpression.html | 145 +
.../log4j/core/util/class-use/CyclicBuffer.html | 62 +
.../class-use/DefaultShutdownCallbackRegistry.html | 62 +
.../log4j/core/util/class-use/DummyNanoClock.html | 62 +
.../core/util/class-use/ExecutorServices.html | 62 +
.../util/class-use/ExtensionLanguageMapping.html | 109 +
.../log4j/core/util/class-use/FileUtils.html | 62 +
.../log4j/core/util/class-use/FileWatcher.html | 170 +
.../logging/log4j/core/util/class-use/IOUtils.html | 62 +
.../log4j/core/util/class-use/Integers.html | 62 +
.../log4j/core/util/class-use/JndiCloser.html | 62 +
.../log4j/core/util/class-use/JsonUtils.html | 62 +
.../core/util/class-use/KeyValuePair.Builder.html | 95 +
.../log4j/core/util/class-use/KeyValuePair.html | 266 +
.../logging/log4j/core/util/class-use/Loader.html | 62 +
.../log4j/core/util/class-use/Log4jThread.html | 62 +
.../core/util/class-use/Log4jThreadFactory.html | 96 +
.../log4j/core/util/class-use/NameUtil.html | 62 +
.../log4j/core/util/class-use/NanoClock.html | 209 +
.../log4j/core/util/class-use/NetUtils.html | 62 +
.../core/util/class-use/NullOutputStream.html | 104 +
.../core/util/class-use/ObjectArrayIterator.html | 62 +
.../log4j/core/util/class-use/OptionConverter.html | 62 +
.../core/util/class-use/PasswordDecryptor.html | 62 +
.../log4j/core/util/class-use/Patterns.html | 62 +
.../log4j/core/util/class-use/ReflectionUtil.html | 62 +
.../core/util/class-use/SecretKeyProvider.html | 62 +
.../util/class-use/ShutdownCallbackRegistry.html | 140 +
.../logging/log4j/core/util/class-use/Source.html | 186 +
.../core/util/class-use/StringBuilderWriter.html | 62 +
.../log4j/core/util/class-use/StringEncoder.html | 62 +
.../log4j/core/util/class-use/SystemClock.html | 62 +
.../core/util/class-use/SystemMillisClock.html | 62 +
.../log4j/core/util/class-use/SystemNanoClock.html | 62 +
.../log4j/core/util/class-use/Throwables.html | 62 +
.../log4j/core/util/class-use/Transform.html | 62 +
.../log4j/core/util/class-use/TypeUtil.html | 62 +
.../log4j/core/util/class-use/UuidUtil.html | 62 +
.../core/util/class-use/WatchEventService.html | 62 +
.../log4j/core/util/class-use/WatchManager.html | 135 +
.../logging/log4j/core/util/class-use/Watcher.html | 195 +
.../log4j/core/util/class-use/WatcherFactory.html | 89 +
.../core/util/class-use/WrappedFileWatcher.html | 62 +
.../log4j/core/util/datetime/DatePrinter.html | 362 +
.../log4j/core/util/datetime/FastDateFormat.html | 1147 +
.../log4j/core/util/datetime/FastDatePrinter.html | 745 +
.../util/datetime/FixedDateFormat.FixedFormat.html | 588 +
.../FixedDateFormat.FixedTimeZoneFormat.html | 252 +
.../log4j/core/util/datetime/FixedDateFormat.html | 339 +
.../logging/log4j/core/util/datetime/Format.html | 181 +
.../core/util/datetime/class-use/DatePrinter.html | 98 +
.../util/datetime/class-use/FastDateFormat.html | 220 +
.../util/datetime/class-use/FastDatePrinter.html | 62 +
.../class-use/FixedDateFormat.FixedFormat.html | 119 +
.../FixedDateFormat.FixedTimeZoneFormat.html | 102 +
.../util/datetime/class-use/FixedDateFormat.html | 100 +
.../log4j/core/util/datetime/class-use/Format.html | 92 +
.../log4j/core/util/datetime/package-summary.html | 140 +
.../log4j/core/util/datetime/package-tree.html | 103 +
.../log4j/core/util/datetime/package-use.html | 110 +
.../logging/log4j/core/util/package-summary.html | 346 +
.../logging/log4j/core/util/package-tree.html | 177 +
.../logging/log4j/core/util/package-use.html | 664 +
javadoc/log4j-core/overview-summary.html | 25 +
javadoc/log4j-core/overview-tree.html | 1256 +
javadoc/log4j-core/package-search-index.js | 1 +
javadoc/log4j-core/resources/glass.png | Bin 0 -> 499 bytes
javadoc/log4j-core/resources/x.png | Bin 0 -> 394 bytes
javadoc/log4j-core/script-dir/jquery-3.6.1.min.js | 2 +
javadoc/log4j-core/script-dir/jquery-ui.min.css | 6 +
javadoc/log4j-core/script-dir/jquery-ui.min.js | 6 +
javadoc/log4j-core/script.js | 132 +
javadoc/log4j-core/search.js | 354 +
javadoc/log4j-core/serialized-form.html | 1252 +
javadoc/log4j-core/stylesheet.css | 869 +
javadoc/log4j-core/tag-search-index.js | 1 +
javadoc/log4j-core/type-search-index.js | 1 +
javadoc/log4j-jakarta-web/allclasses-index.html | 108 +
javadoc/log4j-jakarta-web/allpackages-index.html | 70 +
javadoc/log4j-jakarta-web/constant-values.html | 94 +
javadoc/log4j-jakarta-web/element-list | 1 +
javadoc/log4j-jakarta-web/help-doc.html | 184 +
javadoc/log4j-jakarta-web/index-all.html | 239 +
javadoc/log4j-jakarta-web/index.html | 25 +
javadoc/log4j-jakarta-web/jquery-ui.overrides.css | 35 +
.../legal/ADDITIONAL_LICENSE_INFO | 37 +
javadoc/log4j-jakarta-web/legal/ASSEMBLY_EXCEPTION | 27 +
javadoc/log4j-jakarta-web/legal/LICENSE | 347 +
javadoc/log4j-jakarta-web/legal/jquery.md | 72 +
javadoc/log4j-jakarta-web/legal/jqueryUI.md | 49 +
javadoc/log4j-jakarta-web/member-search-index.js | 1 +
javadoc/log4j-jakarta-web/module-search-index.js | 1 +
.../web/Log4jServletContainerInitializer.html | 178 +
.../log4j/web/Log4jServletContextListener.html | 186 +
.../logging/log4j/web/Log4jServletFilter.html | 217 +
.../Log4jShutdownOnContextDestroyedListener.html | 183 +
.../apache/logging/log4j/web/Log4jWebSupport.html | 329 +
.../log4j/web/ServletRequestThreadContext.html | 198 +
.../logging/log4j/web/WebLoggerContextUtils.html | 260 +
.../org/apache/logging/log4j/web/WebLookup.html | 186 +
.../Log4jServletContainerInitializer.html | 60 +
.../web/class-use/Log4jServletContextListener.html | 60 +
.../log4j/web/class-use/Log4jServletFilter.html | 60 +
.../Log4jShutdownOnContextDestroyedListener.html | 60 +
.../log4j/web/class-use/Log4jWebSupport.html | 60 +
.../web/class-use/ServletRequestThreadContext.html | 60 +
.../log4j/web/class-use/WebLoggerContextUtils.html | 60 +
.../logging/log4j/web/class-use/WebLookup.html | 60 +
.../apache/logging/log4j/web/package-summary.html | 138 +
.../org/apache/logging/log4j/web/package-tree.html | 86 +
.../org/apache/logging/log4j/web/package-use.html | 60 +
javadoc/log4j-jakarta-web/overview-tree.html | 90 +
javadoc/log4j-jakarta-web/package-search-index.js | 1 +
javadoc/log4j-jakarta-web/resources/glass.png | Bin 0 -> 499 bytes
javadoc/log4j-jakarta-web/resources/x.png | Bin 0 -> 394 bytes
.../script-dir/jquery-3.6.1.min.js | 2 +
.../log4j-jakarta-web/script-dir/jquery-ui.min.css | 6 +
.../log4j-jakarta-web/script-dir/jquery-ui.min.js | 6 +
javadoc/log4j-jakarta-web/script.js | 132 +
javadoc/log4j-jakarta-web/search.js | 354 +
javadoc/log4j-jakarta-web/stylesheet.css | 869 +
javadoc/log4j-jakarta-web/tag-search-index.js | 1 +
javadoc/log4j-jakarta-web/type-search-index.js | 1 +
javadoc/log4j-jpa/allclasses-index.html | 142 +
javadoc/log4j-jpa/allpackages-index.html | 75 +
javadoc/log4j-jpa/element-list | 2 +
javadoc/log4j-jpa/help-doc.html | 190 +
javadoc/log4j-jpa/index-all.html | 442 +
javadoc/log4j-jpa/index.html | 77 +
javadoc/log4j-jpa/jquery-ui.overrides.css | 35 +
javadoc/log4j-jpa/legal/ADDITIONAL_LICENSE_INFO | 37 +
javadoc/log4j-jpa/legal/ASSEMBLY_EXCEPTION | 27 +
javadoc/log4j-jpa/legal/LICENSE | 347 +
javadoc/log4j-jpa/legal/jquery.md | 72 +
javadoc/log4j-jpa/legal/jqueryUI.md | 49 +
javadoc/log4j-jpa/member-search-index.js | 1 +
javadoc/log4j-jpa/module-search-index.js | 1 +
.../db/jpa/AbstractLogEventWrapperEntity.html | 621 +
.../core/appender/db/jpa/BasicLogEventEntity.html | 512 +
.../log4j/core/appender/db/jpa/JpaAppender.html | 251 +
.../core/appender/db/jpa/JpaDatabaseManager.html | 257 +
.../class-use/AbstractLogEventWrapperEntity.html | 114 +
.../db/jpa/class-use/BasicLogEventEntity.html | 61 +
.../appender/db/jpa/class-use/JpaAppender.html | 95 +
.../db/jpa/class-use/JpaDatabaseManager.html | 94 +
.../converter/ContextDataAttributeConverter.html | 189 +
.../ContextDataJsonAttributeConverter.html | 190 +
.../converter/ContextMapAttributeConverter.html | 189 +
.../ContextMapJsonAttributeConverter.html | 190 +
.../converter/ContextStackAttributeConverter.html | 190 +
.../ContextStackJsonAttributeConverter.html | 191 +
.../jpa/converter/InstantAttributeConverter.html | 186 +
.../db/jpa/converter/LevelAttributeConverter.html | 186 +
.../db/jpa/converter/MarkerAttributeConverter.html | 186 +
.../jpa/converter/MessageAttributeConverter.html | 186 +
.../StackTraceElementAttributeConverter.html | 186 +
.../jpa/converter/ThrowableAttributeConverter.html | 186 +
.../class-use/ContextDataAttributeConverter.html | 61 +
.../ContextDataJsonAttributeConverter.html | 61 +
.../class-use/ContextMapAttributeConverter.html | 61 +
.../ContextMapJsonAttributeConverter.html | 61 +
.../class-use/ContextStackAttributeConverter.html | 61 +
.../ContextStackJsonAttributeConverter.html | 61 +
.../class-use/InstantAttributeConverter.html | 61 +
.../class-use/LevelAttributeConverter.html | 61 +
.../class-use/MarkerAttributeConverter.html | 61 +
.../class-use/MessageAttributeConverter.html | 61 +
.../StackTraceElementAttributeConverter.html | 61 +
.../class-use/ThrowableAttributeConverter.html | 61 +
.../appender/db/jpa/converter/package-summary.html | 166 +
.../appender/db/jpa/converter/package-tree.html | 86 +
.../appender/db/jpa/converter/package-use.html | 61 +
.../core/appender/db/jpa/package-summary.html | 125 +
.../log4j/core/appender/db/jpa/package-tree.html | 105 +
.../log4j/core/appender/db/jpa/package-use.html | 97 +
javadoc/log4j-jpa/overview-summary.html | 25 +
javadoc/log4j-jpa/overview-tree.html | 118 +
javadoc/log4j-jpa/package-search-index.js | 1 +
javadoc/log4j-jpa/resources/glass.png | Bin 0 -> 499 bytes
javadoc/log4j-jpa/resources/x.png | Bin 0 -> 394 bytes
javadoc/log4j-jpa/script-dir/jquery-3.6.1.min.js | 2 +
javadoc/log4j-jpa/script-dir/jquery-ui.min.css | 6 +
javadoc/log4j-jpa/script-dir/jquery-ui.min.js | 6 +
javadoc/log4j-jpa/script.js | 132 +
javadoc/log4j-jpa/search.js | 354 +
javadoc/log4j-jpa/serialized-form.html | 103 +
javadoc/log4j-jpa/stylesheet.css | 869 +
javadoc/log4j-jpa/tag-search-index.js | 1 +
javadoc/log4j-jpa/type-search-index.js | 1 +
log4j-iostreams.html | 436 +
log4j-jul.html | 878 +
log4j-spring-boot.html | 479 +
log4j-spring-cloud-config-client.html | 555 +
log4j-to-jul.html | 466 +
manual/api.html | 1314 +
manual/appenders.html | 1596 ++
manual/appenders/database.html | 3619 +++
manual/appenders/delegating.html | 2582 ++
manual/appenders/file.html | 748 +
manual/appenders/message-queue.html | 2343 ++
manual/appenders/network.html | 2026 ++
manual/appenders/rolling-file.html | 3183 +++
manual/architecture.html | 1040 +
manual/async.html | 1594 ++
manual/compatibility.html | 390 +
manual/config-intro.html | 406 +
manual/configuration.html | 3277 +++
manual/customconfig.html | 911 +
manual/customloglevels.html | 937 +
manual/eventlogging.html | 444 +
manual/extending.html | 648 +
manual/filters.html | 3231 +++
manual/flowtracing.html | 936 +
manual/garbagefree.html | 1132 +
manual/getting-started.html | 1342 ++
manual/implementation.html | 417 +
manual/index.html | 531 +
manual/installation.html | 1575 ++
manual/jmx.html | 526 +
manual/json-template-layout.html | 3504 +++
manual/layouts.html | 2186 ++
manual/logbuilder.html | 584 +
manual/lookups.html | 2366 ++
manual/markers.html | 720 +
manual/messages.html | 1087 +
manual/pattern-layout.html | 2966 +++
manual/performance.html | 776 +
manual/plugins.html | 830 +
manual/scripts.html | 800 +
manual/simple-logger.html | 777 +
manual/status-logger.html | 684 +
manual/systemproperties.html | 3455 +++
manual/thread-context.html | 629 +
migrate-from-log4j1.html | 1484 ++
migrate-from-logback.html | 670 +
migrate-from-slf4j.html | 545 +
plugin-reference.html | 23932 +++++++++++++++++++
release-notes.html | 10277 ++++++++
sitemap.xml | 235 +
soa.html | 852 +
2230 files changed, 604226 insertions(+), 1 deletion(-)
diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000000..e181ccd394
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,76 @@
+#
+# 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.
+#
+RewriteEngine On
+RewriteBase "/log4j/2.x/"
+
+##
+# To simplify the redirection rules, we normalized them:
+#
+# 1. If the request URIs ends in `/` (necessarily a `path-info`), we add `index.html` to it:
+RewriteRule "^(.*)/$" "$1/index.html" [DPI]
+# 2. If the request URI points to a (non-existent) file, we try adding `.html`:
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond $1 "!\.html$"
+RewriteRule "^(.+)$" "$1.html"
+#
+# From this point rules match against the URI to the real file, with "/log4j/2.x/" stripped.
+
+# The content moved between pages
+RewriteRule "^articles\.html$" "manual/index.html" [R=permanent]
+RewriteRule "^log4j-1\.2-api(/index)?\.html$" "manual/migration.html" [R=permanent]
+RewriteRule "^log4j-api/apidocs(.*)$" "javadoc/log4j-api$1" [R=permanent]
+RewriteRule "^log4j-api(/index)?\.html$" "manual/api.html" [R=permanent]
+RewriteRule "^log4j-appserver(/index)?\.html$" "manual/webapp.html#replace" [R=permanent,NE]
+RewriteRule "^log4j-cassandra(/index)?\.html$" "manual/appenders/database.html#CassandraAppender" [R=permanent,NE]
+RewriteRule "^log4j-core/apidocs(.*)$" "javadoc/log4j-core$1" [R=permanent]
+RewriteRule "^log4j-couchdb(/index)?\.html$" "manual/appenders/database.html#CouchDbProvider" [R=permanent,NE]
+RewriteRule "^log4j-docker(/index)?\.html$" "manual/lookups.html#DockerLookup" [R=permanent,NE]
+RewriteRule "^log4j-flume-ng(/index)?\.html$" "manual/appenders/message-queue.html#FlumeAppender" [R=permanent,NE]
+RewriteRule "^log4j(-jakarta)?-web(/index)?\.html$" "manual/webapp.html" [R=permanent]
+RewriteRule "^log4j-jcl(/index)?\.html$" "manual/installation.html#impl-core-bridge-jcl" [R=permanent,NE]
+RewriteRule "^log4j-jmx-gui(/index)?\.html$" "/log4j/jmx-gui/latest/index.html" [R=permanent]
+RewriteRule "^log4j-jpl(/index)?\.html$" "manual/installation.html#impl-core-bridge-jpl" [R=permanent,NE]
+RewriteRule "^log4j-kubernetes(/index)?\.html$" "https://github.com/fabric8io/kubernetes-client/blob/main/doc/KubernetesLog4j.md" [R=permanent]
+RewriteRule "^log4j-mongodb3(/index)?\.html$" "manual/appenders.html#NoSQLProvider-MongoDB" [R=permanent,NE]
+RewriteRule "^log4j-mongodb4(/index)?\.html$" "manual/appenders.html#MongoDb4Provider" [R=permanent,NE]
+RewriteRule "^log4j-slf4j2?-impl(/index)?\.html$" "manual/installation.html#impl-core-bridge-slf4j" [R=permanent,NE]
+RewriteRule "^log4j-spring-cloud-config(/index)?\.html$" "log4j-spring-cloud-config-client.html" [R=permanent]
+RewriteRule "^log4j-taglib(/index)?\.html$" "manual/webapp.html#log4j-taglib" [R=permanent,NE]
+RewriteRule "^manual/api-separation\.html$" "manual/api.html" [R=permanent]
+RewriteRule "^manual/cloud\.html$" "soa.html" [R=permanent]
+RewriteRule "^manual/logsep\.html$" "jakarta.html#log-separation" [R=permanent,NE]
+RewriteRule "^manual/migration\.html$" "migrate-from-log4j1.html" [R=permanent]
+RewriteRule "^manual/scala-api\.html$" "/log4j/scala/latest/index.html" [R=permanent]
+RewriteRule "^manual/usage\.html$" "manual/api.html" [R=permanent]
+RewriteRule "^manual/webapp\.html$" "jakarta.html" [R=permanent]
+RewriteRule "^runtime-dependencies\.html$" "manual/installation.html" [R=permanent]
+RewriteRule "^thanks\.html$" "/support.html#sponsors" [R=permanent,NE]
+
+# These redirects are special, since:
+#
+# 1. `mod_negotiate` is active and it is applied before `mod_rewrite`,
+# 2. we replaced a directory like `log4j-api/` with a file that has the same prefix like `log4j-api.html`,
+#
+# if the URI path is `/log4j/2.x/log4j-api/foo` we must match `log4j-api.html/foo`.
+RewriteRule "^log4j-iostreams\.html/index\.html$" "log4j-iostreams.html" [R=permanent]
+RewriteRule "^log4j-jul\.html/index\.html$" "log4j-jul.html" [R=permanent,NE]
+RewriteRule "^log4j-spring-boot\.html/index\.html$" "log4j-spring-boot.html" [R=permanent]
+RewriteRule "^log4j-spring-cloud-config-client\.html/index\.html$" "log4j-spring-cloud-config-client.html" [R=permanent]
+RewriteRule "^log4j-to-jul\.html/index\.html$" "log4j-to-jul.html" [R=permanent]
+RewriteRule "^release-notes\.html/index\.html$" "release-notes.html" [R=permanent]
diff --git a/404.html b/404.html
new file mode 100644
index 0000000000..0b576c4692
--- /dev/null
+++ b/404.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Page Not Found :: Apache Log4j</title>
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="/log4j/2.x/_/css/site.css">
+<link rel="icon" href="/log4j/2.x/_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="/log4j/2.x/_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="status-404">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="/log4j/2.x/_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container">
+ <aside class="nav">
+ <div class="panels">
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="/log4j/2.x/index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules//pages/">Edit this Page</a></div>
+</div>
+ <div class="content">
+<article class="doc">
+<h1 class="page">Page Not Found</h1>
+<div class="paragraph">
+<p>The page you’re looking for does not exist. It may have been moved. You can return to the <a href="/index.html">start page</a>, or follow one of the links in the navigation to the left.</p>
+</div>
+<div class="paragraph">
+<p>If you arrived on this page by clicking on a link, please notify the owner of the site that the link is broken.
+If you typed the URL of this page manually, please double check that you entered the address correctly.</p>
+</div>
+</article>
+ </div>
+</main>
+</div>
+<footer class="footer">
+ <p>
+ Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
+ Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
+ </p>
+ <p>
+ Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
+ Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
+ </p>
+</footer>
+<!-- Matomo -->
+<script>
+ var _paq = window._paq = window._paq || [];
+ _paq.push(["disableCookies"]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="https://analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '42']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript>
+<!-- End Matomo Code -->
+<script id="site-script" src="/log4j/2.x/_/js/site.js" data-ui-root-path="/log4j/2.x/_"></script>
+<script async src="/log4j/2.x/_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="/log4j/2.x/_/js/vendor/tabs.js"></script>
+ </body>
+</html>
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 391903d180..0000000000
--- a/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Content for initializing an orphan branch for the website to be generated from `35b8e024734dadfb69f50e04ad288814ed70f6ca`
diff --git a/_/css/site.css b/_/css/site.css
new file mode 100644
index 0000000000..b502bd6a19
--- /dev/null
+++ b/_/css/site.css
@@ -0,0 +1,3 @@
+@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2) format("woff2"),url(../font/roboto-latin-400-normal.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-04 [...]
+
+/*! Adapted from the GitHub style by Vasily Polovnyov <va...@whiteants.net> */.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:600}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:600}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-wei [...]
\ No newline at end of file
diff --git a/_/css/vendor/tabs.css b/_/css/vendor/tabs.css
new file mode 100644
index 0000000000..00771c4e21
--- /dev/null
+++ b/_/css/vendor/tabs.css
@@ -0,0 +1,110 @@
+/*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | MIT License */
+.tabs {
+ margin-bottom: 1.25em;
+}
+
+.tablist > ul {
+ display: flex;
+ flex-wrap: wrap;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.tablist > ul li {
+ align-items: center;
+ background-color: #fff;
+ cursor: pointer;
+ display: flex;
+ font-weight: bold;
+ line-height: 1.5;
+ padding: 0.25em 1em;
+ position: relative;
+}
+
+.tablist > ul li:focus-visible {
+ outline: none;
+}
+
+.tablist.ulist,
+.tablist.ulist > ul li {
+ margin: 0;
+}
+
+.tablist.ulist > ul li + li {
+ margin-left: 0.25em;
+}
+
+.tabs .tablist li::after {
+ content: "";
+ display: block;
+ height: 1px;
+ position: absolute;
+ bottom: -1px;
+ left: 0;
+ right: 0;
+}
+
+.tabs.is-loading .tablist li:not(:first-child),
+.tabs:not(.is-loading) .tablist li:not(.is-selected) {
+ background-color: #f5f5f5;
+}
+
+.tabs.is-loading .tablist li:first-child::after,
+.tabs:not(.is-loading) .tablist li.is-selected::after {
+ background-color: #fff;
+}
+
+/*
+.tabs:not(.is-loading) .tablist li,
+.tabs:not(.is-loading) .tablist li::after {
+ transition: background-color 200ms ease-in-out;
+}
+*/
+
+.tablist > ul p {
+ line-height: inherit;
+ margin: 0;
+}
+
+.tabpanel {
+ background-color: #fff;
+ padding: 1.25em;
+}
+
+.tablist > ul li,
+.tabpanel {
+ border: 1px solid #dcdcdc;
+}
+
+.tablist > ul li {
+ border-bottom: 0;
+}
+
+.tabs.is-loading .tabpanel + .tabpanel,
+.tabs:not(.is-loading) .tabpanel.is-hidden {
+ display: none;
+}
+
+.tabpanel > :first-child {
+ margin-top: 0;
+}
+
+/* #content is a signature of the Asciidoctor standalone HTML output */
+#content .tabpanel > :last-child,
+#content .tabpanel > :last-child > :last-child,
+#content .tabpanel > :last-child > :last-child > li:last-child > :last-child {
+ margin-bottom: 0;
+}
+
+.tablecontainer {
+ overflow-x: auto;
+}
+
+#content .tablecontainer {
+ margin-bottom: 1.25em;
+}
+
+#content .tablecontainer > table.tableblock {
+ margin-bottom: 0;
+}
diff --git a/_/font/roboto-cyrillic-400-italic.woff2 b/_/font/roboto-cyrillic-400-italic.woff2
new file mode 100644
index 0000000000..dd587a2bcb
Binary files /dev/null and b/_/font/roboto-cyrillic-400-italic.woff2 differ
diff --git a/_/font/roboto-cyrillic-400-normal.woff2 b/_/font/roboto-cyrillic-400-normal.woff2
new file mode 100644
index 0000000000..47da362999
Binary files /dev/null and b/_/font/roboto-cyrillic-400-normal.woff2 differ
diff --git a/_/font/roboto-cyrillic-500-italic.woff2 b/_/font/roboto-cyrillic-500-italic.woff2
new file mode 100644
index 0000000000..cbe564b07f
Binary files /dev/null and b/_/font/roboto-cyrillic-500-italic.woff2 differ
diff --git a/_/font/roboto-cyrillic-500-normal.woff2 b/_/font/roboto-cyrillic-500-normal.woff2
new file mode 100644
index 0000000000..cb5834ff83
Binary files /dev/null and b/_/font/roboto-cyrillic-500-normal.woff2 differ
diff --git a/_/font/roboto-latin-400-italic.woff b/_/font/roboto-latin-400-italic.woff
new file mode 100644
index 0000000000..ebee16b9ed
Binary files /dev/null and b/_/font/roboto-latin-400-italic.woff differ
diff --git a/_/font/roboto-latin-400-italic.woff2 b/_/font/roboto-latin-400-italic.woff2
new file mode 100644
index 0000000000..e1b7a79f91
Binary files /dev/null and b/_/font/roboto-latin-400-italic.woff2 differ
diff --git a/_/font/roboto-latin-400-normal.woff b/_/font/roboto-latin-400-normal.woff
new file mode 100644
index 0000000000..9eaa94f9bf
Binary files /dev/null and b/_/font/roboto-latin-400-normal.woff differ
diff --git a/_/font/roboto-latin-400-normal.woff2 b/_/font/roboto-latin-400-normal.woff2
new file mode 100644
index 0000000000..020729ef8d
Binary files /dev/null and b/_/font/roboto-latin-400-normal.woff2 differ
diff --git a/_/font/roboto-latin-500-italic.woff b/_/font/roboto-latin-500-italic.woff
new file mode 100644
index 0000000000..b6ad1c5be1
Binary files /dev/null and b/_/font/roboto-latin-500-italic.woff differ
diff --git a/_/font/roboto-latin-500-italic.woff2 b/_/font/roboto-latin-500-italic.woff2
new file mode 100644
index 0000000000..ae1933f389
Binary files /dev/null and b/_/font/roboto-latin-500-italic.woff2 differ
diff --git a/_/font/roboto-latin-500-normal.woff b/_/font/roboto-latin-500-normal.woff
new file mode 100644
index 0000000000..d39bb52a5c
Binary files /dev/null and b/_/font/roboto-latin-500-normal.woff differ
diff --git a/_/font/roboto-latin-500-normal.woff2 b/_/font/roboto-latin-500-normal.woff2
new file mode 100644
index 0000000000..29342a8de2
Binary files /dev/null and b/_/font/roboto-latin-500-normal.woff2 differ
diff --git a/_/font/roboto-mono-latin-400-normal.woff b/_/font/roboto-mono-latin-400-normal.woff
new file mode 100644
index 0000000000..be3eb4c4cb
Binary files /dev/null and b/_/font/roboto-mono-latin-400-normal.woff differ
diff --git a/_/font/roboto-mono-latin-400-normal.woff2 b/_/font/roboto-mono-latin-400-normal.woff2
new file mode 100644
index 0000000000..f8894bab50
Binary files /dev/null and b/_/font/roboto-mono-latin-400-normal.woff2 differ
diff --git a/_/font/roboto-mono-latin-500-normal.woff b/_/font/roboto-mono-latin-500-normal.woff
new file mode 100644
index 0000000000..43ca6a1b90
Binary files /dev/null and b/_/font/roboto-mono-latin-500-normal.woff differ
diff --git a/_/font/roboto-mono-latin-500-normal.woff2 b/_/font/roboto-mono-latin-500-normal.woff2
new file mode 100644
index 0000000000..b4f2bf8c22
Binary files /dev/null and b/_/font/roboto-mono-latin-500-normal.woff2 differ
diff --git a/_/img/back.svg b/_/img/back.svg
new file mode 100644
index 0000000000..bf7d30e9ac
--- /dev/null
+++ b/_/img/back.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M50.001 9.9L9.9 50 50 90.1l5.656-5.655-30.435-30.442H90.1v-8.006H25.222l30.435-30.44z"/></svg>
\ No newline at end of file
diff --git a/_/img/caret.svg b/_/img/caret.svg
new file mode 100644
index 0000000000..1af41bc6ef
--- /dev/null
+++ b/_/img/caret.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30"><path d="M10.187 3l14 12-14 12z" fill="#c1c1c1" stroke="#c1c1c1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
\ No newline at end of file
diff --git a/_/img/chevron.svg b/_/img/chevron.svg
new file mode 100644
index 0000000000..40e962aff3
--- /dev/null
+++ b/_/img/chevron.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30"><path d="M3.67 6.59L1.455 8.615 15 23.375l13.545-14.76L26.33 6.59 15 18.76z" fill="#5d5d5d"/></svg>
\ No newline at end of file
diff --git a/_/img/home-o.svg b/_/img/home-o.svg
new file mode 100644
index 0000000000..95d193b772
--- /dev/null
+++ b/_/img/home-o.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><g fill="none" stroke="#222" stroke-width="4"><path d="M50.02 13.576l-28.58 25.54-.02 47.345h21.506l.025-25.166H57.05l.025 25.166H78.62l.02-47.31-28.62-25.575z"/><path d="M63.815 25.904v-9.217h8.657V33.64zM21.439 39.116l-9.982 8.92m77.125 0l-9.943-8.885"/></g></svg>
\ No newline at end of file
diff --git a/_/img/home.svg b/_/img/home.svg
new file mode 100644
index 0000000000..4e96b3545c
--- /dev/null
+++ b/_/img/home.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><g stroke="#222" stroke-width="4"><path d="M50.02 13.576l-28.58 25.54-.02 47.345h21.506l.025-25.166H57.05l.025 25.166H78.62l.02-47.31-28.62-25.575z" fill="#222" fill-rule="evenodd"/><path d="M63.815 25.904v-9.217h8.657V33.64z" fill="#222" fill-rule="evenodd"/><path d="M21.439 39.116l-9.982 8.92m77.125 0l-9.943-8.885" fill="none"/></g></svg>
\ No newline at end of file
diff --git a/_/img/menu.svg b/_/img/menu.svg
new file mode 100644
index 0000000000..8b43b2e009
--- /dev/null
+++ b/_/img/menu.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path d="M35 19.772h55" fill="none" stroke="#222" stroke-width="8" stroke-opacity=".941"/><path fill="#222" d="M10 12.272h15v15H10z"/><path d="M43 63.678h45" fill="none" stroke="#222" stroke-width="5" stroke-opacity=".941"/><path fill="#222" d="M23 58.677h10v10H23z"/><path d="M43 82.727h45" fill="none" stroke="#222" stroke-width="5" stroke-opacity=".941"/><path fill="#222" d="M23 77.727h10v10H23z"/><path d="M43 44.628h45" fill [...]
\ No newline at end of file
diff --git a/_/img/octicons-16.svg b/_/img/octicons-16.svg
new file mode 100644
index 0000000000..c2215106f1
--- /dev/null
+++ b/_/img/octicons-16.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><desc>Octicons v11.2.0 by GitHub - https://primer.style/octicons/ - License: MIT</desc><symbol id="icon-clippy" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 [...]
\ No newline at end of file
diff --git a/_/js/site.js b/_/js/site.js
new file mode 100644
index 0000000000..d35a1fd6eb
--- /dev/null
+++ b/_/js/site.js
@@ -0,0 +1,6 @@
+!function(){"use strict";var c,e,o,t,s,r,l=/^sect(\d)$/,i=document.querySelector(".nav-container"),a=document.querySelector(".nav-toggle");function n(){var e,t,n=window.location.hash;if(n&&(n.indexOf("%")&&(n=decodeURIComponent(n)),!(e=o.querySelector('.nav-link[href="'+n+'"]')))){n=document.getElementById(n.slice(1));if(n)for(var i=n,a=document.querySelector("article.doc");(i=i.parentNode)&&i!==a;){var c=i.id;if((c=c||(c=l.test(i.className))&&(i.firstElementChild||{}).id)&&(e=o.querySel [...]
+!function(){"use strict";var e=document.querySelector("aside.toc.sidebar");if(e){if(document.querySelector("body.-toc"))return e.parentNode.removeChild(e);var t=parseInt(e.dataset.levels||2,10);if(!(t<0)){var o="article.doc",d=document.querySelector(o);if(d){for(var n=[],i=0;i<=t;i++){var r=[o];if(i){for(var c=1;c<=i;c++)r.push((2===c?".sectionbody>":"")+".sect"+c);r.push("h"+(i+1)+"[id]"+(1<i?":not(.discrete)":""))}else r.push("h1[id].sect0");n.push(r.join(">"))}m=n.join(","),f=d.parent [...]
+!function(){"use strict";var n,o,i=document.querySelector("article.doc");function c(e){return e&&(~e.indexOf("%")?decodeURIComponent(e):e).slice(1)}function r(e){if(e){if(e.altKey||e.ctrlKey)return;window.location.hash="#"+this.id,e.preventDefault()}var t=function e(t,n){return i.contains(t)?e(t.offsetParent,t.offsetTop+n):n}(this,0)-n.getBoundingClientRect().bottom;!1===e&&o?window.scrollTo({left:0,top:t,behavior:"instant"}):window.scrollTo(0,t)}i&&(n=document.querySelector(".toolbar"), [...]
+!function(){"use strict";var t,e=document.querySelector(".page-versions .version-menu-toggle");e&&(t=document.querySelector(".page-versions"),e.addEventListener("click",function(e){t.classList.toggle("is-active"),e.stopPropagation()}),document.documentElement.addEventListener("click",function(){t.classList.remove("is-active")}))}();
+!function(){"use strict";var i=document.querySelector(".navbar-burger");i&&i.addEventListener("click",function(t){t.stopPropagation(),document.documentElement.classList.toggle("is-clipped--navbar"),i.setAttribute("aria-expanded",this.classList.toggle("is-active"));t=document.getElementById(this.getAttribute("aria-controls")||this.dataset.target);{var e;t.classList.toggle("is-active")&&(t.style.maxHeight="",e=window.innerHeight-Math.round(t.getBoundingClientRect().top),parseInt(window.get [...]
+!function(){"use strict";var o=/^\$ (\S[^\\\n]*(\\\n(?!\$ )[^\\\n]*)*)(?=\n|$)/gm,s=/( ) *\\\n *|\\\n( ?) */g,l=/ +$/gm,e=(document.getElementById("site-script")||{dataset:{}}).dataset,d=window.navigator.clipboard,r=e.svgAs,p=(null==e.uiRootPath?window:e).uiRootPath||".";[].slice.call(document.querySelectorAll(".doc pre.highlight, .doc .literalblock pre")).forEach(function(e){var t,n,a,c;if(e.classList.contains("highlight"))(i=(t=e.querySelector("code")).dataset.lang)&&"console"!==i&&((a [...]
\ No newline at end of file
diff --git a/_/js/vendor/highlight.js b/_/js/vendor/highlight.js
new file mode 100644
index 0000000000..c617244169
--- /dev/null
+++ b/_/js/vendor/highlight.js
@@ -0,0 +1 @@
+!function(){function e(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{ [...]
\ No newline at end of file
diff --git a/_/js/vendor/tabs.js b/_/js/vendor/tabs.js
new file mode 100644
index 0000000000..f8966c0247
--- /dev/null
+++ b/_/js/vendor/tabs.js
@@ -0,0 +1,127 @@
+;(function () { /*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | MIT License */
+ 'use strict'
+
+ var config = (document.currentScript || {}).dataset || {}
+ var forEach = Array.prototype.forEach
+
+ init(document.querySelectorAll('.tabs'))
+
+ function init (tabsBlocks) {
+ if (!tabsBlocks.length) return
+ forEach.call(tabsBlocks, function (tabs) {
+ var syncIds = tabs.classList.contains('is-sync') ? {} : undefined
+ var tablist = tabs.querySelector('.tablist ul')
+ tablist.setAttribute('role', 'tablist')
+ var start
+ forEach.call(tablist.querySelectorAll('li'), function (tab, idx) {
+ tab.tabIndex = -1
+ tab.setAttribute('role', tab.classList.add('tab') || 'tab')
+ var id, anchor, syncId
+ if (!(id = tab.id) && (anchor = tab.querySelector('a[id]'))) {
+ id = tab.id = anchor.parentNode.removeChild(anchor).id
+ }
+ var panel = id && tabs.querySelector('.tabpanel[aria-labelledby~="' + id + '"]')
+ if (!panel) return idx ? undefined : toggleSelected(tab, true) // invalid state
+ syncIds && (((syncId = tab.textContent.trim()) in syncIds) ? (syncId = undefined) : true) &&
+ (syncIds[(tab.dataset.syncId = syncId)] = tab)
+ idx || (syncIds && (start = { tab: tab, panel: panel })) ? toggleHidden(panel, true) : toggleSelected(tab, true)
+ tab.setAttribute('aria-controls', panel.id)
+ panel.setAttribute('role', 'tabpanel')
+ var onClick = syncId === undefined ? activateTab : activateTabSync
+ tab.addEventListener('click', onClick.bind({ tabs: tabs, tab: tab, panel: panel }))
+ })
+ if (!tabs.closest('.tabpanel')) {
+ forEach.call(tabs.querySelectorAll('.tabpanel table.tableblock'), function (table) {
+ var container = Object.assign(document.createElement('div'), { className: 'tablecontainer' })
+ table.parentNode.insertBefore(container, table).appendChild(table)
+ })
+ }
+ if (start) {
+ var syncGroupId
+ for (var i = 0, lst = tabs.classList, len = lst.length, className; i !== len; i++) {
+ if (!(className = lst.item(i)).startsWith('data-sync-group-id=')) continue
+ tabs.dataset.syncGroupId = syncGroupId = lst.remove(className) || className.slice(19).replace(/\u00a0/g, ' ')
+ break
+ }
+ if (syncGroupId === undefined) tabs.dataset.syncGroupId = syncGroupId = Object.keys(syncIds).sort().join('|')
+ var preferredSyncId = 'syncStorageKey' in config &&
+ window[(config.syncStorageScope || 'local') + 'Storage'].getItem(config.syncStorageKey + '-' + syncGroupId)
+ var tab = preferredSyncId && syncIds[preferredSyncId]
+ tab && Object.assign(start, { tab: tab, panel: document.getElementById(tab.getAttribute('aria-controls')) })
+ toggleSelected(start.tab, true) || toggleHidden(start.panel, false)
+ }
+ })
+ onHashChange()
+ toggleClassOnEach(tabsBlocks, 'is-loading', 'remove')
+ window.setTimeout(toggleClassOnEach.bind(null, tabsBlocks, 'is-loaded', 'add'), 0)
+ window.addEventListener('hashchange', onHashChange)
+ }
+
+ function activateTab (e) {
+ var tab = this.tab
+ var tabs = this.tabs || (this.tabs = tab.closest('.tabs'))
+ var panel = this.panel || (this.panel = document.getElementById(tab.getAttribute('aria-controls')))
+ querySelectorWithSiblings(tabs, '.tablist .tab', 'tab').forEach(function (el) {
+ toggleSelected(el, el === tab)
+ })
+ querySelectorWithSiblings(tabs, '.tabpanel', 'tabpanel').forEach(function (el) {
+ toggleHidden(el, el !== panel)
+ })
+ if (!this.isSync && 'syncStorageKey' in config && 'syncGroupId' in tabs.dataset) {
+ var storageKey = config.syncStorageKey + '-' + tabs.dataset.syncGroupId
+ window[(config.syncStorageScope || 'local') + 'Storage'].setItem(storageKey, tab.dataset.syncId)
+ }
+ if (!e) return
+ var loc = window.location
+ var hashIdx = loc.hash ? loc.href.indexOf('#') : -1
+ if (~hashIdx) window.history.replaceState(null, '', loc.href.slice(0, hashIdx))
+ e.preventDefault()
+ }
+
+ function activateTabSync (e) {
+ activateTab.call(this, e)
+ var thisTabs = this.tabs
+ var thisTab = this.tab
+ var initialY = thisTabs.getBoundingClientRect().y
+ forEach.call(document.querySelectorAll('.tabs'), function (tabs) {
+ if (tabs === thisTabs || tabs.dataset.syncGroupId !== thisTabs.dataset.syncGroupId) return
+ querySelectorWithSiblings(tabs, '.tablist .tab', 'tab').forEach(function (tab) {
+ if (tab.dataset.syncId === thisTab.dataset.syncId) activateTab.call({ tabs: tabs, tab: tab, isSync: true })
+ })
+ })
+ var shiftedBy = thisTabs.getBoundingClientRect().y - initialY
+ if (shiftedBy && (shiftedBy = Math.round(shiftedBy))) window.scrollBy({ top: shiftedBy, behavior: 'instant' })
+ }
+
+ function querySelectorWithSiblings (scope, selector, siblingClass) {
+ var el = scope.querySelector(selector)
+ if (!el) return []
+ var result = [el]
+ while ((el = el.nextElementSibling) && el.classList.contains(siblingClass)) result.push(el)
+ return result
+ }
+
+ function toggleClassOnEach (elements, className, method) {
+ forEach.call(elements, function (el) {
+ el.classList[method](className)
+ })
+ }
+
+ function toggleHidden (el, state) {
+ el.classList[(el.hidden = state) ? 'add' : 'remove']('is-hidden')
+ }
+
+ function toggleSelected (el, state) {
+ el.setAttribute('aria-selected', '' + state)
+ el.classList[state ? 'add' : 'remove']('is-selected')
+ el.tabIndex = state ? 0 : -1
+ }
+
+ function onHashChange () {
+ var id = window.location.hash.slice(1)
+ if (!id) return
+ var tab = document.getElementById(~id.indexOf('%') ? decodeURIComponent(id) : id)
+ if (!(tab && tab.classList.contains('tab'))) return
+ 'syncId' in tab.dataset ? activateTabSync.call({ tab: tab }) : activateTab.call({ tab: tab })
+ }
+})()
diff --git a/_images/IntelliJ-IDEA-logo.png b/_images/IntelliJ-IDEA-logo.png
new file mode 100644
index 0000000000..319205b3bb
Binary files /dev/null and b/_images/IntelliJ-IDEA-logo.png differ
diff --git a/_images/YourKitLogo.png b/_images/YourKitLogo.png
new file mode 100644
index 0000000000..dccf574320
Binary files /dev/null and b/_images/YourKitLogo.png differ
diff --git a/_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.svg b/_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.svg
new file mode 100644
index 0000000000..ee9dca5100
--- /dev/null
+++ b/_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="278px" preserveAspectRatio="none" style="width:781px;height:278px;background:#FFFFFF;" version="1.1" viewBox="0 0 781 278" width="781px" zoomAndPan="magnify"><defs/><g><!--cluster LoggerContext--><g id="cluster_LoggerContext"><path d="M8.5,6 L127.5,6 A3.75,3.75 0 0 1 130,8.5 L137,28.2969 L621.5,28.2969 A2.5,2.5 0 0 [...]
\ No newline at end of file
diff --git a/_images/diag-0c23746e246efa4a462049e2adc4b0349185aa77.svg b/_images/diag-0c23746e246efa4a462049e2adc4b0349185aa77.svg
new file mode 100644
index 0000000000..4c2dd6a5f5
--- /dev/null
+++ b/_images/diag-0c23746e246efa4a462049e2adc4b0349185aa77.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="405px" preserveAspectRatio="none" style="width:390px;height:405px;background:#FFFFFF;" version="1.1" viewBox="0 0 390 405" width="390px" zoomAndPan="magnify"><defs/><g><ellipse cx="210" cy="20" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" r [...]
\ No newline at end of file
diff --git a/_images/diag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg b/_images/diag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg
new file mode 100644
index 0000000000..ebf1b851eb
--- /dev/null
+++ b/_images/diag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="417px" preserveAspectRatio="none" style="width:442px;height:417px;background:#FFFFFF;" version="1.1" viewBox="0 0 442 417" width="442px" zoomAndPan="magnify"><defs/><g><ellipse cx="215.75" cy="20" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><rect fill="none" height="270.3628" style="str [...]
\ No newline at end of file
diff --git a/_images/diag-232cdf1d44336897239fa03f6521cc730f38f32d.svg b/_images/diag-232cdf1d44336897239fa03f6521cc730f38f32d.svg
new file mode 100644
index 0000000000..253990d3c1
--- /dev/null
+++ b/_images/diag-232cdf1d44336897239fa03f6521cc730f38f32d.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="218px" preserveAspectRatio="none" style="width:197px;height:218px;background:#FFFFFF;" version="1.1" viewBox="0 0 197 218" width="197px" zoomAndPan="magnify"><defs/><g><!--class Appender--><g id="elem_Appender"><rect codeLine="1" fill="#F1F1F1" height="80.5938" id="Appender" rx="2.5" ry="2.5" style="stroke:#181818; [...]
\ No newline at end of file
diff --git a/_images/diag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg b/_images/diag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg
new file mode 100644
index 0000000000..881ad85f71
--- /dev/null
+++ b/_images/diag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="226px" preserveAspectRatio="none" style="width:771px;height:226px;background:#FFFFFF;" version="1.1" viewBox="0 0 771 226" width="771px" zoomAndPan="magnify"><defs/><g><!--class initial--><g id="elem_initial"><rect codeLine="1" fill="#F1F1F1" height="64.2969" id="initial" rx="2.5" ry="2.5" style="stroke:#181818;str [...]
\ No newline at end of file
diff --git a/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg b/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg
new file mode 100644
index 0000000000..19bc3dd128
--- /dev/null
+++ b/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1022px" preserveAspectRatio="none" style="width:1327px;height:1022px;background:#FFFFFF;" version="1.1" viewBox="0 0 1327 1022" width="1327px" zoomAndPan="magnify"><defs/><g><!--cluster c--><g id="cluster_c"><path d="M8.5,150.89 L116.5,150.89 A3.75,3.75 0 0 1 119,153.39 L126,173.1869 L806.5,173.1869 A2.5,2.5 0 0 1 [...]
\ No newline at end of file
diff --git a/_images/diag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg b/_images/diag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg
new file mode 100644
index 0000000000..230ea88820
--- /dev/null
+++ b/_images/diag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="424px" preserveAspectRatio="none" style="width:281px;height:424px;background:#FFFFFF;" version="1.1" viewBox="0 0 281 424" width="281px" zoomAndPan="magnify"><defs/><g><ellipse cx="128.5" cy="20" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" [...]
\ No newline at end of file
diff --git a/_images/diag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg b/_images/diag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg
new file mode 100644
index 0000000000..13bad114d3
--- /dev/null
+++ b/_images/diag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="614px" preserveAspectRatio="none" style="width:551px;height:614px;background:#FFFFFF;" version="1.1" viewBox="0 0 551 614" width="551px" zoomAndPan="magnify"><defs/><g><!--class Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1" height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ No newline at end of file
diff --git a/_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg b/_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg
new file mode 100644
index 0000000000..cf669cbdd8
--- /dev/null
+++ b/_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="134px" preserveAspectRatio="none" style="width:615px;height:134px;background:#FFFFFF;" version="1.1" viewBox="0 0 615 134" width="615px" zoomAndPan="magnify"><defs/><g><rect fill="#F1F1F1" height="36.2969" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:1.5;" width="48" x="10" y="48.1484"/><text fill="#00000 [...]
\ No newline at end of file
diff --git a/_images/diag-5c97f284d82478c0499cab16fe90893de781b11f.svg b/_images/diag-5c97f284d82478c0499cab16fe90893de781b11f.svg
new file mode 100644
index 0000000000..0460e96382
--- /dev/null
+++ b/_images/diag-5c97f284d82478c0499cab16fe90893de781b11f.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="408px" preserveAspectRatio="none" style="width:325px;height:408px;background:#FFFFFF;" version="1.1" viewBox="0 0 325 408" width="325px" zoomAndPan="magnify"><defs/><g><!--class StrSubstitutor--><g id="elem_StrSubstitutor"><rect codeLine="1" fill="#F1F1F1" height="96.8906" id="StrSubstitutor" rx="2.5" ry="2.5" styl [...]
\ No newline at end of file
diff --git a/_images/diag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg b/_images/diag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg
new file mode 100644
index 0000000000..ea30fa85b9
--- /dev/null
+++ b/_images/diag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="489px" preserveAspectRatio="none" style="width:917px;height:489px;background:#FFFFFF;" version="1.1" viewBox="0 0 917 489" width="917px" zoomAndPan="magnify"><defs/><g><!--class LoggerContext--><g id="elem_LoggerContext"><rect codeLine="1" fill="#F1F1F1" height="96.8906" id="LoggerContext" rx="2.5" ry="2.5" style=" [...]
\ No newline at end of file
diff --git a/_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg b/_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg
new file mode 100644
index 0000000000..407cf3e990
--- /dev/null
+++ b/_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="754px" preserveAspectRatio="none" style="width:549px;height:754px;background:#FFFFFF;" version="1.1" viewBox="0 0 549 754" width="549px" zoomAndPan="magnify"><defs/><g><!--class Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1" height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ No newline at end of file
diff --git a/_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.svg b/_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.svg
new file mode 100644
index 0000000000..c9b6b7b12e
--- /dev/null
+++ b/_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="507px" preserveAspectRatio="none" style="width:649px;height:507px;background:#FFFFFF;" version="1.1" viewBox="0 0 649 507" width="649px" zoomAndPan="magnify"><defs/><g><!--class Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1" height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ No newline at end of file
diff --git a/_images/diag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg b/_images/diag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg
new file mode 100644
index 0000000000..1e0909caa2
--- /dev/null
+++ b/_images/diag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="143px" preserveAspectRatio="none" style="width:771px;height:143px;background:#FFFFFF;" version="1.1" viewBox="0 0 771 143" width="771px" zoomAndPan="magnify"><defs/><g><!--class initial--><g id="elem_initial"><rect codeLine="1" fill="#F1F1F1" height="64.2969" id="initial" rx="2.5" ry="2.5" style="stroke:#181818;str [...]
\ No newline at end of file
diff --git a/_images/diag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg b/_images/diag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg
new file mode 100644
index 0000000000..d9566cac31
--- /dev/null
+++ b/_images/diag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="442px" preserveAspectRatio="none" style="width:298px;height:442px;background:#FFFFFF;" version="1.1" viewBox="0 0 298 442" width="298px" zoomAndPan="magnify"><defs/><g><!--class LoggerContext--><g id="elem_LoggerContext"><rect codeLine="1" fill="#F1F1F1" height="96.8906" id="LoggerContext" rx="2.5" ry="2.5" style=" [...]
\ No newline at end of file
diff --git a/_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg b/_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg
new file mode 100644
index 0000000000..d6568aec0a
--- /dev/null
+++ b/_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="548px" preserveAspectRatio="none" style="width:330px;height:548px;background:#FFFFFF;" version="1.1" viewBox="0 0 330 548" width="330px" zoomAndPan="magnify"><defs/><g><!--class Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1" height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ No newline at end of file
diff --git a/_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg b/_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg
new file mode 100644
index 0000000000..cbe9bce8db
--- /dev/null
+++ b/_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="134px" preserveAspectRatio="none" style="width:347px;height:134px;background:#FFFFFF;" version="1.1" viewBox="0 0 347 134" width="347px" zoomAndPan="magnify"><defs/><g><rect fill="#F1F1F1" height="36.2969" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:1.5;" width="48" x="10" y="48.1484"/><text fill="#00000 [...]
\ No newline at end of file
diff --git a/_images/diag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg b/_images/diag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg
new file mode 100644
index 0000000000..673dd699c8
--- /dev/null
+++ b/_images/diag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="275px" preserveAspectRatio="none" style="width:281px;height:275px;background:#FFFFFF;" version="1.1" viewBox="0 0 281 275" width="281px" zoomAndPan="magnify"><defs/><g><ellipse cx="137.5" cy="20" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><rect fill="#F1F1F1" height="33.9688" rx="12.5" [...]
\ No newline at end of file
diff --git a/_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg b/_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg
new file mode 100644
index 0000000000..c66f60d264
--- /dev/null
+++ b/_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="905px" preserveAspectRatio="none" style="width:1157px;height:905px;background:#FFFFFF;" version="1.1" viewBox="0 0 1157 905" width="1157px" zoomAndPan="magnify"><defs/><g><rect fill="#DDDDDD" height="104.7969" id="_legend" rx="7.5" ry="7.5" style="stroke:#000000;stroke-width:1.0;" width="207" x="924" y="12"/><rect [...]
\ No newline at end of file
diff --git a/_images/diag-d5122741a680d765fa3170a444015b615a1fdafd.svg b/_images/diag-d5122741a680d765fa3170a444015b615a1fdafd.svg
new file mode 100644
index 0000000000..7d4b4be182
--- /dev/null
+++ b/_images/diag-d5122741a680d765fa3170a444015b615a1fdafd.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="226px" preserveAspectRatio="none" style="width:771px;height:226px;background:#FFFFFF;" version="1.1" viewBox="0 0 771 226" width="771px" zoomAndPan="magnify"><defs/><g><!--class initial--><g id="elem_initial"><rect codeLine="1" fill="#F1F1F1" height="64.2969" id="initial" rx="2.5" ry="2.5" style="stroke:#181818;str [...]
\ No newline at end of file
diff --git a/_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg b/_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg
new file mode 100644
index 0000000000..dcd88d33a2
--- /dev/null
+++ b/_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="300px" preserveAspectRatio="none" style="width:649px;height:300px;background:#FFFFFF;" version="1.1" viewBox="0 0 649 300" width="649px" zoomAndPan="magnify"><defs/><g><!--class LoggerContext--><g id="elem_LoggerContext"><rect codeLine="1" fill="#F1F1F1" height="96.8906" id="LoggerContext" rx="2.5" ry="2.5" style=" [...]
\ No newline at end of file
diff --git a/_images/favicon.ico b/_images/favicon.ico
new file mode 100644
index 0000000000..a9e28f080d
Binary files /dev/null and b/_images/favicon.ico differ
diff --git a/_images/jmx-jconsole-mbeans.png b/_images/jmx-jconsole-mbeans.png
new file mode 100644
index 0000000000..16ae364552
Binary files /dev/null and b/_images/jmx-jconsole-mbeans.png differ
diff --git a/_images/logo-big-black.png b/_images/logo-big-black.png
new file mode 100644
index 0000000000..4cff921fb4
Binary files /dev/null and b/_images/logo-big-black.png differ
diff --git a/_images/logo-small-white.png b/_images/logo-small-white.png
new file mode 100644
index 0000000000..f2a539ea7c
Binary files /dev/null and b/_images/logo-small-white.png differ
diff --git a/components.html b/components.html
new file mode 100644
index 0000000000..b21e1f036e
--- /dev/null
+++ b/components.html
@@ -0,0 +1,2451 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Components :: Apache Log4j</title>
+ <link rel="canonical" href="https://logging.apache.org/log4j/2.x/components.html">
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="article">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+ <aside class="nav">
+ <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+ <nav class="nav-menu">
+ <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
+ <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="download.html">Download</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="release-notes.html">Release Notes</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/index.html">Manual</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/getting-started.html">Getting started</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/installation.html">Installation</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html">API</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#loggers">Loggers</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/eventlogging.html">Event Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/status-logger.html">Status Logger</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/logbuilder.html">Fluent API</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customloglevels.html">Levels</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/markers.html">Markers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/thread-context.html">Thread Context</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/messages.html">Messages</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/implementation.html">Implementation</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/architecture.html">Architecture</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/config-intro.html">Configuration</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/configuration.html">Configuration file</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/appenders.html">Appenders</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/file.html">File appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/database.html">Database appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/layouts.html">Layouts</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/lookups.html">Lookups</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/filters.html">Filters</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/scripts.html">Scripts</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/jmx.html">JMX</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/extending.html">Extending</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/plugins.html">Plugins</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/performance.html">Performance</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/async.html">Asynchronous loggers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">References</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="plugin-reference.html">Plugin reference</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="javadoc.html">Java API reference</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Resources</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="faq.html">F.A.Q.</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="development.html">Development</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item is-current-page" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="components.html">Components</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Related projects</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </nav>
+</div>
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li><a href="components.html">Components</a></li>
+ </ul>
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/components.adoc">Edit this Page</a></div>
+</div>
+ <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="4">
+ <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Components</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Log4j 2 distribution contains the following artifacts:</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-bom"><a class="anchor" href="#log4j-bom"></a><code>log4j-bom</code></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A public Bill-of-Materials that manages all the versions of Log4j artifacts.
+You can import the BOM in your build tool of preference:</p>
+</div>
+<div id="_tabs_1" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_1_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_1_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_1_maven--panel" class="tabpanel" aria-labelledby="_tabs_1_maven">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-bom</artifactId>
+ <version>2.24.1</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+</dependencyManagement></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_1_gradle--panel" class="tabpanel" aria-labelledby="_tabs_1_gradle">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">dependencies {
+ implementation platform('org.apache.logging.log4j:log4j-bom:2.24.1')
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j"><a class="anchor" href="#log4j"></a><code>log4j</code></h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A private Bill-of-Materials used during the compilation and testing of the project.</p>
+</div>
+<div class="admonitionblock caution">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-caution" title="Caution"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Do not use this artifact, since it also manages versions of <strong>third-party</strong> projects.
+Use <a href="#log4j-bom"><code>log4j-bom</code></a> instead.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-12-api"><a class="anchor" href="#log4j-12-api"></a><code>log4j-1.2-api</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.log4j</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-1.2-api</code> artifact contains several tools to help users migrate from Log4j 1 to Log4j 2.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="migrate-from-log4j1.html#option-1-use-the-log4j-1-x-bridge-log4j-1-2-api" class="xref page">Log4j 1 to Log4j 2 Bridge</a> for details.</p>
+</div>
+<div id="_tabs_2" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_2_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_2_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_2_maven--panel" class="tabpanel" aria-labelledby="_tabs_2_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-1.2-api</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_2_gradle--panel" class="tabpanel" aria-labelledby="_tabs_2_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-1.2-api'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-api"><a class="anchor" href="#log4j-api"></a><code>log4j-api</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-api</code> artifact contains the <a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/api.html" class="xref page">Log4j API</a> for more details.</p>
+</div>
+<div id="_tabs_3" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_3_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_3_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_3_maven--panel" class="tabpanel" aria-labelledby="_tabs_3_maven">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <version>${log4j-api.version}</version>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_3_gradle--panel" class="tabpanel" aria-labelledby="_tabs_3_gradle">
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">implementation 'org.apache.logging.log4j:log4j-api:${log4j-api.version}'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-api-test"><a class="anchor" href="#log4j-api-test"></a><code>log4j-api-test</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.test</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-api-test</code> artifact contains test fixtures useful to test Log4j API implementations.</p>
+</div>
+<div id="_tabs_4" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_4_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_4_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_4_maven--panel" class="tabpanel" aria-labelledby="_tabs_4_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api-test</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_4_gradle--panel" class="tabpanel" aria-labelledby="_tabs_4_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-api-test'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-appserver"><a class="anchor" href="#log4j-appserver"></a><code>log4j-appserver</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.appserver</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-appserver</code> artifact contains:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>A bridge from Tomcat JULI to the Log4j API.
+See <a href="jakarta.html#replace-tomcat" class="xref page">Replacing Tomcat logging system</a> for more information.</p>
+</li>
+<li>
+<p>A bridge from Jetty 9 logging API to the Log4j API.
+See <a href="jakarta.html#replace-jetty" class="xref page">Replacing Jetty logging system</a> for more information</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_5" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_5_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_5_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_5_maven--panel" class="tabpanel" aria-labelledby="_tabs_5_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-appserver</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_5_gradle--panel" class="tabpanel" aria-labelledby="_tabs_5_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-appserver'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-cassandra"><a class="anchor" href="#log4j-cassandra"></a><code>log4j-cassandra</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.cassandra</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-cassandra</code> artifact contains an <a href="manual/appenders.html" class="xref page">appender</a> for the
+<a href="https://cassandra.apache.org/_/index.html">Apache Cassandra</a>
+database.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/appenders/database.html#CassandraAppender" class="xref page">Cassandra Appender</a> for more information.</p>
+</div>
+<div id="_tabs_6" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_6_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_6_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_6_maven--panel" class="tabpanel" aria-labelledby="_tabs_6_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-cassandra</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_6_gradle--panel" class="tabpanel" aria-labelledby="_tabs_6_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-cassandra'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-core"><a class="anchor" href="#log4j-core"></a><code>log4j-core</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.core</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-core</code> artifact contains the reference implementation of the <a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/implementation.html" class="xref page">Reference implementation</a> for more details.</p>
+</div>
+<div id="_tabs_7" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_7_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_7_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_7_maven--panel" class="tabpanel" aria-labelledby="_tabs_7_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_7_gradle--panel" class="tabpanel" aria-labelledby="_tabs_7_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-core'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-core-test"><a class="anchor" href="#log4j-core-test"></a><code>log4j-core-test</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.core.test</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-core-test</code> artifact contains test fixtures useful to <a href="manual/extending.html" class="xref page">extend the reference implementation</a>.</p>
+</div>
+<div id="_tabs_8" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_8_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_8_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_8_maven--panel" class="tabpanel" aria-labelledby="_tabs_8_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core-test</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_8_gradle--panel" class="tabpanel" aria-labelledby="_tabs_8_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-core-test'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-couchdb"><a class="anchor" href="#log4j-couchdb"></a><code>log4j-couchdb</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.couchdb</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-couchdb</code> artifact contains a provider to connect the
+<a href="manual/appenders/database.html#NoSqlAppender" class="xref page">NoSQL Appender</a>
+with the
+<a href="https://couchdb.apache.org/">Apache CouchDB</a>
+database.</p>
+</div>
+<div class="paragraph">
+<p>See
+<a href="manual/appenders/database.html#CouchDbProvider" class="xref page">CouchDB provider</a>
+for more information.</p>
+</div>
+<div id="_tabs_9" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_9_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_9_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_9_maven--panel" class="tabpanel" aria-labelledby="_tabs_9_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-couchdb</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_9_gradle--panel" class="tabpanel" aria-labelledby="_tabs_9_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-couchdb'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-docker"><a class="anchor" href="#log4j-docker"></a><code>log4j-docker</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.docker</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-docker</code> artifact contains a <a href="manual/lookups.html" class="xref page">lookup</a> for applications running in a
+<a href="https://www.docker.com/">Docker container</a></p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/lookups.html#DockerLookup" class="xref page">Docker lookup</a> for more information.</p>
+</div>
+<div id="_tabs_10" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_10_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_10_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_10_maven--panel" class="tabpanel" aria-labelledby="_tabs_10_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-docker</artifactId>
+ <version>2.24.1</version>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_10_gradle--panel" class="tabpanel" aria-labelledby="_tabs_10_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-docker:2.24.1'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-flume-ng"><a class="anchor" href="#log4j-flume-ng"></a><code>log4j-flume-ng</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.flume</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-flume-ng</code> artifact contains an <a href="manual/appenders.html" class="xref page">appender</a> for the
+<a href="https://flume.apache.org/">Apache Flume</a>
+log data collection service.</p>
+</div>
+<div class="paragraph">
+<p>See
+<a href="manual/appenders/message-queue.html#FlumeAppender" class="xref page">Flume Appender</a>
+for more information.</p>
+</div>
+<div id="_tabs_11" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_11_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_11_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_11_maven--panel" class="tabpanel" aria-labelledby="_tabs_11_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-flume-ng</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_11_gradle--panel" class="tabpanel" aria-labelledby="_tabs_11_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-flume-ng'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-iostreams"><a class="anchor" href="#log4j-iostreams"></a><code>log4j-iostreams</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.iostreams</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-iostreams</code> artifact is an extension of the <a href="manual/api.html" class="xref page">Log4j API</a> to connect with legacy stream-based logging methods.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="log4j-iostreams.html" class="xref page">Log4j IOStreams</a> for more information.</p>
+</div>
+<div id="_tabs_12" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_12_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_12_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_12_maven--panel" class="tabpanel" aria-labelledby="_tabs_12_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-iostreams</artifactId>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_12_gradle--panel" class="tabpanel" aria-labelledby="_tabs_12_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">implementation 'org.apache.logging.log4j:log4j-iostreams'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jakarta-smtp"><a class="anchor" href="#log4j-jakarta-smtp"></a><code>log4j-jakarta-smtp</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.jakarta.smtp</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jakarta-smtp</code> contains an <a href="manual/appenders.html" class="xref page">appender</a> for the
+<a href="https://jakarta.ee/specifications/mail/2.0/">Jakarta Mail 2.0 API</a>
+and later versions.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/appenders/network.html#SmtpAppender" class="xref page">SMTP Appender</a> for more information.</p>
+</div>
+<div id="_tabs_13" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_13_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_13_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_13_maven--panel" class="tabpanel" aria-labelledby="_tabs_13_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jakarta-smtp</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_13_gradle--panel" class="tabpanel" aria-labelledby="_tabs_13_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jakarta-smtp'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jakarta-web"><a class="anchor" href="#log4j-jakarta-web"></a><code>log4j-jakarta-web</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.jakarta.web</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jakarta-web</code> contains multiple utils to run your applications in a
+<a href="https://jakarta.ee/specifications/servlet/5.0/">Jakarta Servlet 5.0</a>
+or later environment:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>It synchronizes the lifecycle of Log4j Core and your application.
+See <a href="jakarta.html#log4j-jakarta-web" class="xref page">Integrating with web applications</a> for more details.</p>
+</li>
+<li>
+<p>It contains a <a href="manual/lookups.html" class="xref page">lookup</a> for the data contained in a Servlet context.
+See <a href="manual/lookups.html#WebLookup" class="xref page">Web Lookup</a> for more details.</p>
+</li>
+<li>
+<p>It contains an <a href="manual/appenders.html" class="xref page">appender</a> to forward log event to a Servlet.
+See <a href="manual/appenders.html#ServletAppender" class="xref page">Servlet Appender</a> for more details.</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Don’t deploy this artifact together with <a href="#log4j-web"><code>log4j-web</code></a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="_tabs_14" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_14_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_14_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_14_maven--panel" class="tabpanel" aria-labelledby="_tabs_14_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jakarta-web</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_14_gradle--panel" class="tabpanel" aria-labelledby="_tabs_14_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jakarta-web'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jcl"><a class="anchor" href="#log4j-jcl"></a><code>log4j-jcl</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.jcl</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jcl</code> artifact contains a bridge from
+<a href="https://commons.apache.org/proper/commons-logging/">Apache Commons Logging</a>
+and the
+<a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/installation.html#impl-core-bridge-jcl" class="xref page">Installing JCL-to-Log4j API bridge</a> for more details.</p>
+</div>
+<div id="_tabs_15" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_15_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_15_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_15_maven--panel" class="tabpanel" aria-labelledby="_tabs_15_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jcl</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_15_gradle--panel" class="tabpanel" aria-labelledby="_tabs_15_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jcl'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jdbc-dbcp2"><a class="anchor" href="#log4j-jdbc-dbcp2"></a><code>log4j-jdbc-dbcp2</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.jdbc.dbcp2</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jdbc-dbcp2</code> artifact contains a data source for the
+<a href="manual/appenders/database.html#JdbcAppender" class="xref page">JDBC Appender</a>
+that uses
+<a href="https://commons.apache.org/proper/commons-dbcp/">Apache Commons DBCP</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/appenders/database.html#PoolingDriverConnectionSource" class="xref page"><code>PoolingDriver</code> connection source</a> for more details.</p>
+</div>
+<div id="_tabs_16" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_16_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_16_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_16_maven--panel" class="tabpanel" aria-labelledby="_tabs_16_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jdbc-dbcp2</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_16_gradle--panel" class="tabpanel" aria-labelledby="_tabs_16_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jdbc-dbcp2'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jpa"><a class="anchor" href="#log4j-jpa"></a><code>log4j-jpa</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.jpa</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jpa</code> artifact contains an <a href="manual/appenders.html" class="xref page">appender</a> for the
+<a href="https://jakarta.ee/specifications/persistence/2.2/">Jakarta Persistence 2.2 API</a>
+or Java Persistence API.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/appenders/database.html#JpaAppender" class="xref page">JPA Appender</a> for more details.</p>
+</div>
+<div id="_tabs_17" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_17_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_17_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_17_maven--panel" class="tabpanel" aria-labelledby="_tabs_17_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jpa</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_17_gradle--panel" class="tabpanel" aria-labelledby="_tabs_17_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jpa'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jpl"><a class="anchor" href="#log4j-jpl"></a><code>log4j-jpl</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.jpl</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jpl</code> artifact contains a bridge from
+<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.Logger.html"><code>System.Logger</code></a>
+to the <a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/installation.html#impl-core-bridge-jpl" class="xref page">Installing the JPL-to-Log4j API bridge</a> for more details.</p>
+</div>
+<div id="_tabs_18" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_18_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_18_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_18_maven--panel" class="tabpanel" aria-labelledby="_tabs_18_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jpl</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_18_gradle--panel" class="tabpanel" aria-labelledby="_tabs_18_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jpl'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jul"><a class="anchor" href="#log4j-jul"></a><code>log4j-jul</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.jul</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jul</code> artifact contains a bridge from
+<a href="https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary.html"><code>java.util.logging</code></a>
+to the <a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/installation.html#impl-core-bridge-jul" class="xref page">Installing the JUL-to-Log4j API bridge</a> for more details.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Don’t deploy this artifact together with <a href="#log4j-to-jul"><code>log4j-to-jul</code></a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="_tabs_19" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_19_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_19_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_19_maven--panel" class="tabpanel" aria-labelledby="_tabs_19_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jul</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_19_gradle--panel" class="tabpanel" aria-labelledby="_tabs_19_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jul'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-json-template-layout"><a class="anchor" href="#log4j-json-template-layout"></a><code>log4j-json-template-layout</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.json.template.layout</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-json-template-layout</code> contains a highly extensible and configurable
+<a href="manual/layouts.html" class="xref page">layout</a>
+to format log events as JSON.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/json-template-layout.html" class="xref page">JSON Template Layout</a> for details.</p>
+</div>
+<div id="_tabs_20" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_20_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_20_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_20_maven--panel" class="tabpanel" aria-labelledby="_tabs_20_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-json-template-layout</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_20_gradle--panel" class="tabpanel" aria-labelledby="_tabs_20_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-json-template-layout'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-mongodb"><a class="anchor" href="#log4j-mongodb"></a><code>log4j-mongodb</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.mongodb</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-mongodb</code> artifact contains a provider to connect the
+<a href="manual/appenders/database.html#NoSqlAppender" class="xref page">NoSQL Appender</a>
+with the
+<a href="https://www.mongodb.com/">MongoDB</a>
+database.
+It is based on the latest version of the Java driver.</p>
+</div>
+<div class="paragraph">
+<p>See
+<a href="manual/appenders/database.html#MongoDbProvider" class="xref page">MongoDb provider</a>
+for more information.</p>
+</div>
+<div id="_tabs_21" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_21_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_21_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_21_maven--panel" class="tabpanel" aria-labelledby="_tabs_21_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-mongodb</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_21_gradle--panel" class="tabpanel" aria-labelledby="_tabs_21_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-mongodb4'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-mongodb4"><a class="anchor" href="#log4j-mongodb4"></a><code>log4j-mongodb4</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.mongodb4</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-mongodb</code> artifact contains a provider to connect the
+<a href="manual/appenders/database.html#NoSqlAppender" class="xref page">NoSQL Appender</a>
+with the
+<a href="https://www.mongodb.com/">MongoDB</a>
+database.
+It is based on version 4.x of the Java driver.</p>
+</div>
+<div class="paragraph">
+<p>See
+<a href="manual/appenders/database.html#MongoDb4Provider" class="xref page">MongoDb4 provider</a>
+for more information.</p>
+</div>
+<div id="_tabs_22" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_22_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_22_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_22_maven--panel" class="tabpanel" aria-labelledby="_tabs_22_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-mongodb4</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_22_gradle--panel" class="tabpanel" aria-labelledby="_tabs_22_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-mongodb4'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-slf4j2-impl"><a class="anchor" href="#log4j-slf4j2-impl"></a><code>log4j-slf4j2-impl</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.slf4j2.impl</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-slf4j2-impl</code> artifact contains a bridge from
+<a href="https://www.slf4j.org/">SLF4J 2 API</a>
+to the <a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/installation.html#impl-core-bridge-slf4j" class="xref page">Installing the SLF4J-to-Log4j API bridge</a> for more details.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Don’t deploy this artifact together with either <a href="#log4j-slf4j-impl"><code>log4j-slf4j-impl</code></a> or <a href="#log4j-to-slf4j"><code>log4j-to-slf4j</code></a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="_tabs_23" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_23_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_23_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_23_maven--panel" class="tabpanel" aria-labelledby="_tabs_23_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j2-impl</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_23_gradle--panel" class="tabpanel" aria-labelledby="_tabs_23_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-slf4j2-impl'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-slf4j-impl"><a class="anchor" href="#log4j-slf4j-impl"></a><code>log4j-slf4j-impl</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.slf4j.impl</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-slf4j-impl</code> artifact contains a bridge from
+<a href="https://www.slf4j.org/">SLF4J 1 API</a>
+to the <a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/installation.html#impl-core-bridge-slf4j" class="xref page">Installing the SLF4J-to-Log4j API bridge</a> for more details.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Don’t deploy this artifact together with either <a href="#log4j-slf4j2-impl"><code>log4j-slf4j2-impl</code></a> or <a href="#log4j-to-slf4j"><code>log4j-to-slf4j</code></a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="_tabs_24" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_24_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_24_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_24_maven--panel" class="tabpanel" aria-labelledby="_tabs_24_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_24_gradle--panel" class="tabpanel" aria-labelledby="_tabs_24_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-slf4j-impl'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-spring-boot"><a class="anchor" href="#log4j-spring-boot"></a><code>log4j-spring-boot</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.spring.boot</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-spring-boot</code> artifact contains multiple utils to integrate with
+<a href="https://spring.io/projects/spring-framework">Spring Framework 5.x</a>
+or earlier versions and
+<a href="https://spring.io/projects/spring-boot">Spring Boot 2.x</a>
+or earlier versions.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>It provides a <a href="manual/systemproperties.html#property-sources" class="xref page">property source</a>.
+See <a href="manual/systemproperties.html#SpringPropertySource" class="xref page">Spring Property source</a> for more details.</p>
+</li>
+<li>
+<p>It provides a <a href="manual/lookups.html" class="xref page">lookup</a>.
+See <a href="manual/lookups.html#SpringBootLookup" class="xref page">Spring lookup</a> for more details.</p>
+</li>
+<li>
+<p>It provides an <a href="manual/configuration.html#arbiters" class="xref page">arbiter</a>.
+See <a href="log4j-spring-boot.html" class="xref page">Spring arbiter</a> for more details.</p>
+</li>
+<li>
+<p>It provides an alternative
+<a href="https://docs.spring.io/spring-boot/api/java/org/springframework/boot/logging/LoggingSystem.html"><code>LoggingSystem</code></a>
+implementation.
+See <a href="log4j-spring-boot.html" class="xref page">Log4j Spring Boot Support</a> for more details.</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_25" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_25_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_25_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_25_maven--panel" class="tabpanel" aria-labelledby="_tabs_25_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-spring-boot</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_25_gradle--panel" class="tabpanel" aria-labelledby="_tabs_25_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-spring-boot'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-spring-cloud-config-client"><a class="anchor" href="#log4j-spring-cloud-config-client"></a><code>log4j-spring-cloud-config-client</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.spring.cloud.config.client</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-spring-cloud-config-client</code> provides utils to integrate with
+<a href="https://spring.io/projects/spring-cloud-config">Spring Cloud Config 3.x</a>
+or earlier versions.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="log4j-spring-cloud-config-client.html" class="xref page">Log4j Spring Cloud Configuration</a> for more details.</p>
+</div>
+<div id="_tabs_26" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_26_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_26_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_26_maven--panel" class="tabpanel" aria-labelledby="_tabs_26_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-spring-cloud-config-client</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_26_gradle--panel" class="tabpanel" aria-labelledby="_tabs_26_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-spring-cloud-config-client'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-taglib"><a class="anchor" href="#log4j-taglib"></a><code>log4j-taglib</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.taglib</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-taglib</code> provides a
+<a href="https://jakarta.ee/specifications/pages/2.3/">Jakarta Servlet Pages 2.3</a>
+or earlier library that logs to the <a href="manual/api.html" class="xref page">Log4j API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="jakarta.html#log4j-taglib" class="xref page">Log4j Taglib</a> for more details.</p>
+</div>
+<div id="_tabs_27" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_27_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_27_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_27_maven--panel" class="tabpanel" aria-labelledby="_tabs_27_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-taglib</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_27_gradle--panel" class="tabpanel" aria-labelledby="_tabs_27_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-taglib'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-to-jul"><a class="anchor" href="#log4j-to-jul"></a><code>log4j-to-jul</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.to.jul</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jul</code> artifact contains an implementation of the
+<a href="manual/api.html" class="xref page">Log4j API</a>
+that logs to
+<a href="https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary.html"><code>java.util.logging</code></a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/installation.html#impl-jul" class="xref page">Installing JUL</a> for more details.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Don’t deploy this artifact together with <a href="#log4j-jul"><code>log4j-jul</code></a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="_tabs_28" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_28_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_28_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_28_maven--panel" class="tabpanel" aria-labelledby="_tabs_28_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-to-jul</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_28_gradle--panel" class="tabpanel" aria-labelledby="_tabs_28_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-to-jul'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-to-slf4j"><a class="anchor" href="#log4j-to-slf4j"></a><code>log4j-to-slf4j</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.to.slf4j</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jul</code> artifact contains an implementation of the
+<a href="manual/api.html" class="xref page">Log4j API</a>
+that logs to
+<a href="https://www.slf4j.org/">SLF4J API</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/installation.html#impl-logback" class="xref page">Installing Logback</a> for more details.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Don’t deploy this artifact together with either <a href="#log4j-slf4j-impl"><code>log4j-slf4j-impl</code></a> or <a href="#log4j-slf4j2-impl"><code>log4j-slf4j2-impl</code></a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="_tabs_29" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_29_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_29_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_29_maven--panel" class="tabpanel" aria-labelledby="_tabs_29_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-to-slf4j</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_29_gradle--panel" class="tabpanel" aria-labelledby="_tabs_29_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-to-slf4j'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-web"><a class="anchor" href="#log4j-web"></a><code>log4j-web</code></h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 100%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">JPMS module</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>org.apache.logging.log4j.web</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The <code>log4j-jakarta-web</code> contains multiple utils to run your applications in a
+<a href="https://jakarta.ee/specifications/servlet/5.0/">Jakarta Servlet 4.0</a>
+or Java EE Servlet environment:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>It synchronizes the lifecycle of Log4j Core and your application.
+See <a href="jakarta.html#log4j-jakarta-web" class="xref page">Integrating with web applications</a> for more details.</p>
+</li>
+<li>
+<p>It contains a lookup for the data contained in a Servlet context.
+See <a href="manual/lookups.html#WebLookup" class="xref page">Web Lookup</a> for more details.</p>
+</li>
+<li>
+<p>It contains an <a href="manual/appenders.html" class="xref page">appender</a> to forward log event to a Servlet.
+See <a href="manual/appenders.html#ServletAppender" class="xref page">Servlet Appender</a> for more details.</p>
+</li>
+</ul>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Don’t deploy this artifact together with <a href="#log4j-jakarta-web"><code>log4j-jakarta-web</code></a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="_tabs_30" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_30_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_30_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_30_maven--panel" class="tabpanel" aria-labelledby="_tabs_30_maven">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-web</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_30_gradle--panel" class="tabpanel" aria-labelledby="_tabs_30_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="#log4j-bom"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-web'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</article>
+ </div>
+</main>
+</div>
+<footer class="footer">
+ <p>
+ Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
+ Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
+ </p>
+ <p>
+ Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
+ Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
+ </p>
+</footer>
+<!-- Matomo -->
+<script>
+ var _paq = window._paq = window._paq || [];
+ _paq.push(["disableCookies"]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="https://analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '42']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript>
+<!-- End Matomo Code -->
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+ </body>
+</html>
diff --git a/development.html b/development.html
new file mode 100644
index 0000000000..19e7c309f7
--- /dev/null
+++ b/development.html
@@ -0,0 +1,576 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Development :: Apache Log4j</title>
+ <link rel="canonical" href="https://logging.apache.org/log4j/2.x/development.html">
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="article">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+ <aside class="nav">
+ <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+ <nav class="nav-menu">
+ <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
+ <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="download.html">Download</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="release-notes.html">Release Notes</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/index.html">Manual</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/getting-started.html">Getting started</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/installation.html">Installation</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html">API</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#loggers">Loggers</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/eventlogging.html">Event Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/status-logger.html">Status Logger</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/logbuilder.html">Fluent API</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customloglevels.html">Levels</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/markers.html">Markers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/thread-context.html">Thread Context</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/messages.html">Messages</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/implementation.html">Implementation</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/architecture.html">Architecture</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/config-intro.html">Configuration</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/configuration.html">Configuration file</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/appenders.html">Appenders</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/file.html">File appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/database.html">Database appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/layouts.html">Layouts</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/lookups.html">Lookups</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/filters.html">Filters</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/scripts.html">Scripts</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/jmx.html">JMX</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/extending.html">Extending</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/plugins.html">Plugins</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/performance.html">Performance</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/async.html">Asynchronous loggers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">References</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="plugin-reference.html">Plugin reference</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="javadoc.html">Java API reference</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Resources</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="faq.html">F.A.Q.</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a>
+ </li>
+ <li class="nav-item is-current-page" data-depth="1">
+ <a class="nav-link" href="development.html">Development</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="components.html">Components</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Related projects</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </nav>
+</div>
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li>Resources</li>
+ <li><a href="development.html">Development</a></li>
+ </ul>
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/development.adoc">Edit this Page</a></div>
+</div>
+ <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="4">
+ <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Development</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>This page shares information related to the development of Log4j.
+Content is aimed for users who want to contribute source code patches and maintainers.</p>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Do you need help for setting up or configuring Log4j?
+Please refer to <a href="https://logging.apache.org/support.html">the Support page</a> instead.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="github"><a class="anchor" href="#github"></a>GitHub setup</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Log4j uses GitHub extensively:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Source code repository</dt>
+<dd>
+<p><a href="https://github.com/apache/logging-log4j2/tree/2.x" class="bare">https://github.com/apache/logging-log4j2/tree/2.x</a></p>
+</dd>
+<dt class="hdlist1">Issue tracker</dt>
+<dd>
+<p><a href="https://github.com/apache/logging-log4j2/issues" class="bare">https://github.com/apache/logging-log4j2/issues</a></p>
+</dd>
+<dt class="hdlist1">Discussions</dt>
+<dd>
+<p><a href="https://github.com/apache/logging-log4j2/discussions" class="bare">https://github.com/apache/logging-log4j2/discussions</a></p>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Maintainer discussions mostly take place in mailing lists.
+Please refer to <a href="https://logging.apache.org/support.html">the Support page</a> for the complete list of communication channels.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="branching"><a class="anchor" href="#branching"></a>Branching scheme</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The following branching scheme is followed:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>2.x</code></dt>
+<dd>
+<p>The most recent Log4j 2 code</p>
+</dd>
+<dt class="hdlist1"><code>main</code></dt>
+<dd>
+<p>The most recent Log4j 3 code</p>
+</dd>
+<dt class="hdlist1"><code><sourceBranch>-site-<environment></code></dt>
+<dt class="hdlist1"><code><sourceBranch>-site-<environment>-out</code></dt>
+<dd>
+<p>Branches used to serve the staging and production websites.
+<code>out</code>-suffixed ones are automatically populated by CI, you are not supposed to touch them.
+See <a href="https://logging.apache.org/logging-parent/usage.html#website">the Logging Parent website</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>release/<version></code></dt>
+<dd>
+<p>Branch triggering the CI logic to start <a href="https://logging.apache.org/logging-parent/release-instructions-project.html">the release process</a></p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="building"><a class="anchor" href="#building"></a>How can I build Log4j from sources?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>See <a href="https://github.com/apache/logging-log4j2/tree/2.x/BUILDING.adoc">the build instructions</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="contributor"><a class="anchor" href="#contributor"></a>I am <strong>not</strong> a committer. How shall I submit a patch?</h2>
+<div class="sectionbody">
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Is this a <em>trivial fix</em> such as code or documentation typo?
+Simply submit a pull request.
+Changelog entry is not needed and make sure <code>./mvnw verify site</code> succeeds.</p>
+</li>
+<li>
+<p>Is this a <em>non-trivial fix</em> or a <em>new feature</em>?
+Pitch it in a <a href="https://logging.apache.org/support.html#discussions-maintainer">maintainer discussion channel</a> and ask for assistance.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="committer"><a class="anchor" href="#committer"></a>I am a committer. How shall I push my changes?</h2>
+<div class="sectionbody">
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Is it something trivial?
+Go ahead and push it.</p>
+</li>
+<li>
+<p>Otherwise, submit a pull request.
+Make sure a changelog entry is attached and <code>./mvnw verify site</code> succeeds.</p>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>You are strongly advised to spar with another maintainer first (see <a href="https://logging.apache.org/support.html#discussions-maintainer">maintainer discussion channels</a>) before starting to code.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-project"><a class="anchor" href="#release-project"></a>I am a PMC member. How do I make a new release?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All Maven-based Logging Services projects are parented by
+<a href="https://logging.apache.org/logging-parent/index.html">Logging Parent</a>,
+which streamlines several project-wide processes, including making a new release.
+See <a href="https://logging.apache.org/logging-parent/release-instructions-project.html">its release instructions for projects</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-xml-schema"><a class="anchor" href="#release-xml-schema"></a>I am a PMC member. How do I publish a new XML schema?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All Maven-based Logging Services projects are parented by
+<a href="https://logging.apache.org/logging-parent/index.html">Logging Parent</a>,
+which streamlines several project-wide processes, including publishing XML schemas.
+See <a href="https://logging.apache.org/logging-parent/release-instructions-xml-schema.html">its release instructions for XML schemas</a>.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p><strong>Projects and XML schemas have different lifecycles!</strong>
+A new release of a project does not necessarily mean a new release of its XML schemas.
+XML schemas might have been untouched, or they might contain minor changes while the project itself contains breaking changes, etc.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</article>
+ </div>
+</main>
+</div>
+<footer class="footer">
+ <p>
+ Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
+ Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
+ </p>
+ <p>
+ Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
+ Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
+ </p>
+</footer>
+<!-- Matomo -->
+<script>
+ var _paq = window._paq = window._paq || [];
+ _paq.push(["disableCookies"]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="https://analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '42']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript>
+<!-- End Matomo Code -->
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+ </body>
+</html>
diff --git a/download.html b/download.html
new file mode 100644
index 0000000000..4de3f32041
--- /dev/null
+++ b/download.html
@@ -0,0 +1,581 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Download :: Apache Log4j</title>
+ <link rel="canonical" href="https://logging.apache.org/log4j/2.x/download.html">
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="article">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+ <aside class="nav">
+ <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+ <nav class="nav-menu">
+ <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
+ <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+ <li class="nav-item is-current-page" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="download.html">Download</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="release-notes.html">Release Notes</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/index.html">Manual</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/getting-started.html">Getting started</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/installation.html">Installation</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html">API</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#loggers">Loggers</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/eventlogging.html">Event Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/status-logger.html">Status Logger</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/logbuilder.html">Fluent API</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customloglevels.html">Levels</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/markers.html">Markers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/thread-context.html">Thread Context</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/messages.html">Messages</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/implementation.html">Implementation</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/architecture.html">Architecture</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/config-intro.html">Configuration</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/configuration.html">Configuration file</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/appenders.html">Appenders</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/file.html">File appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/database.html">Database appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/layouts.html">Layouts</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/lookups.html">Lookups</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/filters.html">Filters</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/scripts.html">Scripts</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/jmx.html">JMX</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/extending.html">Extending</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/plugins.html">Plugins</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/performance.html">Performance</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/async.html">Asynchronous loggers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">References</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="plugin-reference.html">Plugin reference</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="javadoc.html">Java API reference</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Resources</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="faq.html">F.A.Q.</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="development.html">Development</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="components.html">Components</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Related projects</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </nav>
+</div>
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li><a href="download.html">Download</a></li>
+ </ul>
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/download.adoc">Edit this Page</a></div>
+</div>
+ <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="4">
+ <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Download</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Apache Log4j is distributed under the
+<a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.
+You can find the download links of the official <a href="#source-distribution">source</a> and <a href="#binary-distribution">binary distributions</a> below.</p>
+</div>
+<div class="paragraph">
+<p>See also the <a href="https://logging.apache.org/download.html">Logging Services download page</a> for instruction on how to validate the downloaded files.</p>
+</div>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>Are you looking for <strong>the Log4j installation instructions</strong>?
+Proceed to <a href="manual/installation.html" class="xref page">Installation</a>.</p>
+</li>
+<li>
+<p>Are you looking for the list of changes associated with a particular release?
+Proceed to <a href="release-notes.html" class="xref page">Release Notes</a>.</p>
+</li>
+</ul>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="source-distribution"><a class="anchor" href="#source-distribution"></a>Source distribution</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can download the source code of the latest Apache Log4j release using the links below:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. Source distribution files</caption>
+<colgroup>
+<col style="width: 28.5714%;">
+<col style="width: 71.4286%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Source distribution archive</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/log4j/2.24.1/apache-log4j-2.24.1-src.zip">apache-log4j-2.24.1-src.zip</a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Checksum</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/log4j/2.24.1/apache-log4j-2.24.1-src.zip.sha512">apache-log4j-2.24.1-src.zip.sha512</a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Signature</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/log4j/2.24.1/apache-log4j-2.24.1-src.zip.asc">apache-log4j-2.24.1-src.zip.asc</a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">PGP keys</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/KEYS">KEYS</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect1">
+<h2 id="binary-distribution"><a class="anchor" href="#binary-distribution"></a>Binary distribution</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A set of binaries of Apache Log4j is available through two main distribution channels:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">ASF Nexus Repository</dt>
+<dd>
+<div class="paragraph">
+<p>All the binary artifacts are available on the Apache Software Foundation
+<a href="https://repository.apache.org/content/repositories/releases/"><code>repository.apache.org</code> Nexus repository</a>.
+Its content is mirrored to the
+<a href="https://repo.maven.apache.org/maven2/">Maven Central repository</a>.</p>
+</div>
+<div class="paragraph">
+<p>See <a href="components.html" class="xref page">Components</a> for more information on the GAV coordinates of the artifacts.</p>
+</div>
+</dd>
+<dt class="hdlist1">Binary distribution archive</dt>
+<dd>
+<div class="paragraph">
+<p>All the artifacts in the ASF Nexus repository are also available in a single ZIP archive:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 2. Binary distribution files</caption>
+<colgroup>
+<col style="width: 28.5714%;">
+<col style="width: 71.4286%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Source distribution archive</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/log4j/2.24.1/apache-log4j-2.24.1-bin.zip">apache-log4j-2.24.1-bin.zip</a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Checksum</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/log4j/2.24.1/apache-log4j-2.24.1-bin.zip.sha512">apache-log4j-2.24.1-src.bin.sha512</a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Signature</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/log4j/2.24.1/apache-log4j-2.24.1-bin.zip.asc">apache-log4j-2.24.1-src.bin.asc</a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">PGP keys</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://downloads.apache.org/logging/KEYS">KEYS</a></p></td>
+</tr>
+</tbody>
+</table>
+</dd>
+</dl>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The authenticity of the Apache Log4j binary release is independently verified by the
+<a href="https://github.com/jvm-repo-rebuild/reproducible-central">Reproducible Builds for Maven Central Repository</a>
+project.
+You can check the reproducibility status of the artifacts on their
+<a href="https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/org/apache/logging/log4j/log4j/README.md"><code>org.apache.logging.log4j:log4j</code> RB check</a> page.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="sbom"><a class="anchor" href="#sbom"></a>Software Bill of Materials (SBOM)</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Each Apache Log4j artifact is accompanied by a Software Bill of Materials in
+<a href="https://cyclonedx.org/">CycloneDX format</a>.
+The SBOMs are published to the ASF Nexus repository with <code>cyclonedx</code> as classifier and <code>xml</code> as type and are also available in the binary distribution archive.</p>
+</div>
+<div class="paragraph">
+<p>See also <a href="https://logging.apache.org/download.html#sbom">Apache Logging Services SBOMs</a>.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Since Apache Log4j is a software library, the contents of the SBOMs constitute only a <strong>suggested</strong> list of component versions known to work with Apache Log4j.
+These versions are used by our unit tests.</p>
+</div>
+<div class="paragraph">
+<p>The <strong>effective</strong> list of components included in an application containing Apache Log4j can only be determined by the producer of the application.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="older"><a class="anchor" href="#older"></a>Older releases</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Are you looking for old versions of Log4j?
+While we recommend always using the latest version, you can find the older versions here:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="https://logging.apache.org/log4j/1.x/index.html">Log4j 1.x (End of Life, Java 1.4)</a></p>
+</li>
+<li>
+<p><a href="https://logging.apache.org/log4j/2.3.x/index.html">Log4j 2.3.x (Java 6)</a></p>
+</li>
+<li>
+<p><a href="https://logging.apache.org/log4j/2.12.x/index.html">Log4j 2.12.x (Java 7)</a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</article>
+ </div>
+</main>
+</div>
+<footer class="footer">
+ <p>
+ Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
+ Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
+ </p>
+ <p>
+ Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
+ Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
+ </p>
+</footer>
+<!-- Matomo -->
+<script>
+ var _paq = window._paq = window._paq || [];
+ _paq.push(["disableCookies"]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="https://analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '42']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript>
+<!-- End Matomo Code -->
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+ </body>
+</html>
diff --git a/faq.html b/faq.html
new file mode 100644
index 0000000000..28466148e1
--- /dev/null
+++ b/faq.html
@@ -0,0 +1,854 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>F.A.Q. :: Apache Log4j</title>
+ <link rel="canonical" href="https://logging.apache.org/log4j/2.x/faq.html">
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="article">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+ <aside class="nav">
+ <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+ <nav class="nav-menu">
+ <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
+ <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="download.html">Download</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="release-notes.html">Release Notes</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/index.html">Manual</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/getting-started.html">Getting started</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/installation.html">Installation</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html">API</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#loggers">Loggers</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/eventlogging.html">Event Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/status-logger.html">Status Logger</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/logbuilder.html">Fluent API</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customloglevels.html">Levels</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/markers.html">Markers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/thread-context.html">Thread Context</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/messages.html">Messages</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/implementation.html">Implementation</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/architecture.html">Architecture</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/config-intro.html">Configuration</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/configuration.html">Configuration file</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/appenders.html">Appenders</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/file.html">File appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/database.html">Database appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/layouts.html">Layouts</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/lookups.html">Lookups</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/filters.html">Filters</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/scripts.html">Scripts</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/jmx.html">JMX</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/extending.html">Extending</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/plugins.html">Plugins</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/performance.html">Performance</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/async.html">Asynchronous loggers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">References</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="plugin-reference.html">Plugin reference</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="javadoc.html">Java API reference</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Resources</span>
+<ul class="nav-list">
+ <li class="nav-item is-current-page" data-depth="1">
+ <a class="nav-link" href="faq.html">F.A.Q.</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="development.html">Development</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="components.html">Components</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Related projects</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </nav>
+</div>
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li>Resources</li>
+ <li><a href="faq.html">F.A.Q.</a></li>
+ </ul>
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/faq.adoc">Edit this Page</a></div>
+</div>
+ <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="4">
+ <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">F.A.Q.</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>This page compiles a list of frequently asked questions.
+If you don’t find the answer to your question, please consult to <a href="https://logging.apache.org/support.html">the support page</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="config_location"><a class="anchor" href="#config_location"></a>How do I specify the configuration file location?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>By default, Log4j looks for a configuration file named <code>log4j2.xml</code>, <code>log4j2.properties</code>, etc. in the classpath.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Log4j 1 (which has reached its end-of-life in 2015!) uses <code>log4j.xml</code>.
+Log4j 2 and onwards use <code>log4j2.xml</code>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>You can also specify the full path of the configuration file using a system property:<br>
+<code>-Dlog4j2.configurationFile=/path/to/log4j2.xml</code></p>
+</div>
+<div class="paragraph">
+<p>That property can also be included in a classpath resource file named <code>log4j2.component.properties</code>.</p>
+</div>
+<div class="paragraph">
+<p>Web applications can specify the Log4j configuration file location with a servlet context parameter.
+See <a href="jakarta.html#log4jConfiguration" class="xref page">the related page on web applications</a>.</p>
+</div>
+<div class="paragraph">
+<p>Refer to <a href="manual/configuration.html" class="xref page">the Configuration page</a> for further details.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="config_from_code"><a class="anchor" href="#config_from_code"></a>How do I configure Log4j programmatically?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Starting with version <code>2.4</code>, Log4j provides <a href="manual/customconfig.html" class="xref page">an API for programmatic configuration</a>.
+<a href="javadoc/log4j-core/org/apache/logging/log4j/core/config/builder/api/ConfigurationBuilder.html">The new <code>ConfigurationBuilder</code> API</a> allows you to create <code>Configuration</code>s in code by constructing component definitions without requiring you to know about the internals of actual configuration objects like loggers and appenders.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="reconfig_from_code"><a class="anchor" href="#reconfig_from_code"></a>How do I reconfigure Log4j programmatically?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can reconfigure Log4j programmatically using <a href="javadoc/log4j-core/org/apache/logging/log4j/core/config/Configurator.html">the <code>Configurator</code> API</a> as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import org.apache.logging.log4j.core.config.Configurator;
+
+URI configSourceUri = new File("/path/to/a/different/log4j2.xml").toURI();
+Configurator.reconfigure(configSourceUri);</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="shutdown"><a class="anchor" href="#shutdown"></a>How do I shut down Log4j programmatically?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Normally there is no need to do this manually.
+Each <code>LoggerContext</code> registers a shutdown hook that takes care of releasing resources when the JVM exits, unless the <code>log4j.shutdownHookEnabled</code> system property is set to <code>false</code>.
+Likewise, <a href="jakarta.html" class="xref page">Web applications</a> replace the shutdown hook with their own resource management mechanisms.
+That is, they clean up necessary resources when the web application is stopped.
+However, if you need to manually shut down Log4j, you can use one of the <code>shutdown()</code> methods of <a href="javadoc/log4j-api/org/apache/logging/log4j/LogManager.html#shutdown()"><code>LogManager</code></a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="reconfig_level_from_code"><a class="anchor" href="#reconfig_level_from_code"></a>How do I set a logger level programmatically?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can set the level of a logger using <a href="javadoc/log4j-core/org/apache/logging/log4j/core/config/Configurator.html"><code>Configurator</code></a> from Log4j Core:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import org.apache.logging.log4j.core.config.Configurator;
+
+// Set the level of particular logger associated with a class
+Configurator.setLevel("com.example.Foo", Level.DEBUG);
+
+// Set the level of the root logger
+Configurator.setRootLevel(Level.DEBUG);</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="config_sep_appender_level"><a class="anchor" href="#config_sep_appender_level"></a>How do I send log messages with different levels to different appenders?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You don’t need to declare separate loggers to achieve this.
+You can set the logging level on the <code>AppenderRef</code> element.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><?xml version="1.0" encoding="UTF-8"?>
+<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://logging.apache.org/xml/ns"
+ xsi:schemaLocation="
+ https://logging.apache.org/xml/ns
+ https://logging.apache.org/xml/ns/log4j-config-2.xsd">
+ <appenders>
+ <File name="file" fileName="app.log">
+ <PatternLayout pattern="%d %p %c{1.} [%t] %m %ex%n"/>
+ </File>
+ <Console name="stdout" target="SYSTEM_OUT">
+ <PatternLayout pattern="%m%n"/>
+ </Console>
+ </appenders>
+ <loggers>
+ <root level="WARN">
+ <AppenderRef ref="file" level="DEBUG"/>
+ <AppenderRef ref="stdout" level="INFO"/>
+ </root>
+ </loggers>
+</Configuration></code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="troubleshooting"><a class="anchor" href="#troubleshooting"></a>How do I troubleshoot my setup?</h2>
+<div class="sectionbody">
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Make sure you have <a href="manual/installation.html" class="xref page">the right JAR files</a> on your classpath.</p>
+</li>
+<li>
+<p>Check the name of your configuration file.
+By default, Log4j looks for a configuration file named <code>log4j2.xml</code> on the classpath.
+Note the <code>2</code> in the file name!
+(See <a href="manual/configuration.html" class="xref page">the Configuration page</a> for more details.)</p>
+</li>
+<li>
+<p>Increase the logging verbosity of the internal <a href="manual/status-logger.html" class="xref page">Status Logger</a>:<br>
+<code>-Dlog4j2.statusLoggerLevel=TRACE</code></p>
+</li>
+<li>
+<p>Enable all internal debug logging: <code>-Dlog4j2.debug</code>.
+This disables level-based <a href="manual/status-logger.html" class="xref page">Status Logger</a> filtering and effectively allows all status logs.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="separate_log_files"><a class="anchor" href="#separate_log_files"></a>How do I dynamically write to separate log files?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You can use <a href="manual/appenders/delegating.html#RoutingAppender" class="xref page">the routing appender</a> to evaluate a log message and forward it to a particular appender.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="api-tradeoffs"><a class="anchor" href="#api-tradeoffs"></a>What are the trade-offs of using Log4j API versus SLF4J?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Log4j API and SLF4J have a lot in common.
+They both share the objective of cleanly separating the logging API from the implementation.
+We believe that Log4j API can help make your application more performant while offering more functionality and more flexibility.</p>
+</div>
+<div class="paragraph">
+<p>There may be a concern that using the Log4j API will tightly couple your application to Log4j.
+This is not the case: applications coded to Log4j API always have the option to use any SLF4J-compliant logging implementation with the <code>log4j-to-slf4j</code> bridge.
+See <a href="manual/installation.html" class="xref page">the Installation page</a> for details.</p>
+</div>
+<div class="paragraph">
+<p>There are several advantages to using Log4j API:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>SLF4J forces your application to log <code>String</code>s.
+Log4j API supports logging any <code>CharSequence</code> if you want to log text, but also supports logging any <code>Object</code> as is.
+It is the responsibility of the logging <em>implementation</em> to handle this object, and we consider it a design mistake to limit applications to logging <code>String</code>s.</p>
+</li>
+<li>
+<p>Log4j API offers support for logging <a href="manual/messages.html" class="xref page"><code>Message</code> objects</a>.
+Messages allow support for interesting and complex constructs to be passed through the logging system and be efficiently manipulated.
+Users are free to create their own message types and write custom layouts, filters and lookups to manipulate them.</p>
+</li>
+<li>
+<p>Log4j API supports <a href="manual/api.html#fluent-api" class="xref page">lambda expressions</a> both in its plain and fluent API.</p>
+</li>
+<li>
+<p>Log4j API has better support for <a href="manual/garbagefree.html" class="xref page">garbage-free logging</a>: it avoids creating <code>vararg</code> arrays and avoids creating <code>String</code>s when logging <code>CharSequence</code>s.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="gc-free-slf4j"><a class="anchor" href="#gc-free-slf4j"></a>Is Log4j still garbage-free when I use SLF4J?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>If you use SLF4J as your logging API and Log4j Core as the logging implementation, yes.
+The <code>log4j-slf4j-impl</code> and <code>log4j-slf4j2-impl</code> bridges (together with <code>log4j-core</code>) implement the <code>org.slf4j.Logger</code> methods to be garbage-free.
+However, bear in mind that there are some limitations:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The SLF4J API only offers up to two parameters for a parameterized message.
+More than that uses <code>vararg</code>s, which create a temporary object for the parameter array.
+In contrast, Log4j API has methods for up to ten unrolled parameters.</p>
+</li>
+<li>
+<p>SLF4J forces your application to log <code>String</code>s.
+Log4j API lets you log any <code>CharSequence</code> or <code>Object</code>.
+Log4j Core can log any <code>Object</code> that implements <code>CharSequence</code> or <code>org.apache.logging.log4j.util.StringBuilderFormattable</code> without creating garbage.</p>
+</li>
+<li>
+<p>The <a href="https://www.slf4j.org/api/org/slf4j/spi/LocationAwareLogger.html#log(org.slf4j.Marker,java.lang.String,int,java.lang.String,java.lang.Object%5B%5D,java.lang.Throwable)"><code>org.slf4j.spi.LocationAwareLogger::log</code></a> method is not yet implemented in a garbage-free manner in the <code>log4j-slf4j-impl</code> and <code>log4j-slf4j2-impl</code> bridges.
+It creates a new message object for each call.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="gc-free-domain-object"><a class="anchor" href="#gc-free-domain-object"></a>How do I log my domain object without creating garbage?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>One option is to let the domain object implement <code>CharSequence</code>.
+However, for many domain objects it may not be trivial to implement this without allocating temporary objects.</p>
+</div>
+<div class="paragraph">
+<p>An alternative is to implement the <code>org.apache.logging.log4j.util.StringBuilderFormattable</code> interface.
+If an object is logged that implements this interface, its <code>formatTo(StringBuilder)</code> method is called instead of <code>toString()</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="logger-wrapper"><a class="anchor" href="#logger-wrapper"></a>How do I create a custom logger wrapper that shows the correct class, method, and line number?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Log4j remembers the fully qualified class name (FQCN) of the logger and uses this to walk the stack trace for every log event when configured to print location.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Be aware that logging with location is slow and may impact the performance of your application.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The problem with custom logger wrappers is that they have a different FQCN than the actual logger, so Log4j can’t find the place where your custom logger was called.</p>
+</div>
+<div class="paragraph">
+<p>The solution is to provide the correct FQCN.
+The easiest way to do this is to let Log4j generate the logger wrapper for you.
+Log4j comes with a Logger wrapper generator tool.
+This tool was originally meant to support custom log levels and was moved to the
+<a href="https://logging.apache.org/log4j/transform/latest/index.html">Log4j Transform subproject</a>.
+The generated logger code will take care of the FQCN.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="proguard-rules"><a class="anchor" href="#proguard-rules"></a>Which rules do I need to add when ProGuard minification is enabled?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>When you are using Log4j with ProGuard/R8 enabled, you need to add the following rules to your configuration file:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-none hljs">-keep,allowoptimization class org.apache.logging.log4j.** { *; }</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="package-scanning"><a class="anchor" href="#package-scanning"></a>Why am I receiving warnings about package scanning?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Since Log4j 2.19.1, the package scanning feature has been deprecated (see
+<a href="https://issues.apache.org/jira/browse/LOG4J2-3644">LOG4J2-3644</a>):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>You should remove the <code>packages</code> attribute from your
+<a href="manual/configuration.html" class="xref page">Log4j Core configuration files</a>.</p>
+</li>
+<li>
+<p>You should remove any calls to
+<a href="javadoc/log4j-core/org/apache/logging/log4j/core/config/plugins/util/PluginManager.html#addPackage(java.lang.String)">PluginManager.addPackage()</a>
+and
+<a href="javadoc/log4j-core/org/apache/logging/log4j/core/config/plugins/util/PluginManager.html#addPackages(java.util.Collection)">PluginManager.addPackages()</a>
+from your code.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Package scanning has been replaced with Log4j plugin descriptors, which have been available since version 2.0 and widely used by Log4j extension JARs.</p>
+</div>
+<div class="paragraph">
+<p>If you are developing custom plugins, see <a href="manual/plugins.html#plugin-registry" class="xref page">Plugin registration</a> on details about plugin descriptors.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="plugin-descriptors"><a class="anchor" href="#plugin-descriptors"></a>Why am I receiving warnings about missing plugin descriptors?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><a href="manual/plugins.html" class="xref page">Log4j Plugins</a>
+should be registered in a:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-none hljs">META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>file on the classpath of the Java applications.</p>
+</div>
+<div class="paragraph">
+<p>Starting with Log4j version <code>2.24.0</code>, you will receive a warning if a plugin is not registered properly.
+The common causes for improperly registered plugins are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>One of the <a href="components.html" class="xref page">Log4j artifacts</a> might be corrupted.
+If you are using a single-JAR application, this might be caused by an improper shading configuration.
+See <a href="#shading">Shading/Shadowing</a> on how to properly shade Log4j artifacts.</p>
+</li>
+<li>
+<p>A custom Log4j plugin has not been properly registered.
+See <a href="manual/plugins.html#plugin-registry" class="xref page">Registering plugins</a> for more details.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="single-jar"><a class="anchor" href="#single-jar"></a>How do I create a single-JAR application containing Log4j Core?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>There are two ways to create single-JAR applications: you can create
+<a href="#jar-in-jar">JAR-in-JAR executable packages</a>
+or
+<a href="#shading">shaded JARs</a>.
+See the sections below on how to properly use these techniques with Log4j Core.</p>
+</div>
+<div class="sect2">
+<h3 id="jar-in-jar"><a class="anchor" href="#jar-in-jar"></a>Jar-in-Jar</h3>
+<div class="paragraph">
+<p>The easiest and recommended way to create single-JAR applications containing Log4j Core is to include <strong>unmodified</strong> versions of Log4j artifacts inside the JAR file of your application.
+You can do it with the following build tool plugins:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="https://docs.spring.io/spring-boot/maven-plugin/packaging.html">Spring Boot Maven Plugin</a>,</p>
+</li>
+<li>
+<p><a href="https://docs.spring.io/spring-boot/gradle-plugin/packaging.html">Spring Boot Gradle Plugin</a>,</p>
+</li>
+<li>
+<p><a href="https://github.com/sbt/sbt-onejar">sbt-onejar plugin</a>.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="shading"><a class="anchor" href="#shading"></a>Shading/Shadowing</h3>
+<div class="paragraph">
+<p>The shading process unwraps all the files contained in dependency JARs and copies them to the JAR containing the application.
+Since multiple JARs can contain files with the same name, you need to properly resolve the file naming conflicts that arise.</p>
+</div>
+<div class="paragraph">
+<p>If your application uses Log4j Core, the following conflicts must be resolved:</p>
+</div>
+<details>
+<summary class="title">Click to list the possible file name conflicts</summary>
+<div class="content">
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>module-info.class</code></dt>
+<dd>
+<p>If you are writing a JPMS application, you need to propertly merge these files.
+Otherwise, they should be discarded.</p>
+</dd>
+<dt class="hdlist1"><code>META-INF/MANIFEST.MF</code></dt>
+<dd>
+<div class="paragraph">
+<p>If you are writing a Java SE application, you only need to add:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-manifest hljs" data-lang="manifest">Multi-Release: true</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>to your application manifest.</p>
+</div>
+<div class="paragraph">
+<p>If you are writing an OSGi application, you need to properly merge the OSGi headers.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>META-INF/DEPENDENCIES</code></dt>
+<dt class="hdlist1"><code>META-INF/LICENSE</code></dt>
+<dt class="hdlist1"><code>META-INF/NOTICE</code></dt>
+<dd>
+<p>Ask your legal department on how to handle these files.</p>
+</dd>
+<dt class="hdlist1"><code>META-INF/services/*</code></dt>
+<dd>
+<p>These files contain
+<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html"><code>ServiceLoader</code> descriptors</a>.
+You need to properly merge them by concatenating conflicting files.</p>
+</dd>
+<dt class="hdlist1"><code>META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat</code></dt>
+<dd>
+<p>These files contain Log4j plugin descriptors and need to be properly merged using the appropriate resource transformer for your shading plugin:</p>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><a href="https://maven.apache.org/plugins/maven-assembly-plugin/">Maven Assembly Plugin</a></dt>
+<dt class="hdlist1"><a href="https://github.com/sbt/sbt-assembly">SBT Assembly Plugin</a></dt>
+<dd>
+<p>We are not aware of any resource transformers capable of merging Log4j plugin descriptors.</p>
+</dd>
+<dt class="hdlist1"><a href="https://maven.apache.org/plugins/maven-shade-plugin/">Maven Shade Plugin</a></dt>
+<dd>
+<p>You need to use the
+<a href="https://logging.staged.apache.org/log4j/transform/log4j-transform-maven-shade-plugin-extensions.html#log4j-plugin-cache-transformer">Log4j Plugin Descriptor Transformer</a>.</p>
+</dd>
+<dt class="hdlist1"><a href="https://gradleup.com/shadow/">Gradle Shadow Plugin</a></dt>
+<dd>
+<p>You need to use the
+<a href="https://github.com/GradleUp/shadow/blob/main/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/Log4j2PluginsCacheFileTransformer.groovy"><code>Log4j2PluginsCacheFileTransformer</code></a>.</p>
+</dd>
+</dl>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</details>
+</div>
+</div>
+</div>
+</article>
+ </div>
+</main>
+</div>
+<footer class="footer">
+ <p>
+ Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
+ Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
+ </p>
+ <p>
+ Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
+ Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
+ </p>
+</footer>
+<!-- Matomo -->
+<script>
+ var _paq = window._paq = window._paq || [];
+ _paq.push(["disableCookies"]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="https://analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '42']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript>
+<!-- End Matomo Code -->
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+ </body>
+</html>
diff --git a/hibernate.html b/hibernate.html
new file mode 100644
index 0000000000..72a0be0efc
--- /dev/null
+++ b/hibernate.html
@@ -0,0 +1,606 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Integrating with Hibernate :: Apache Log4j</title>
+ <link rel="canonical" href="https://logging.apache.org/log4j/2.x/hibernate.html">
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="article">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+ <aside class="nav">
+ <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+ <nav class="nav-menu">
+ <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
+ <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="download.html">Download</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="release-notes.html">Release Notes</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/index.html">Manual</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/getting-started.html">Getting started</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/installation.html">Installation</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html">API</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#loggers">Loggers</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/eventlogging.html">Event Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/status-logger.html">Status Logger</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/logbuilder.html">Fluent API</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customloglevels.html">Levels</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/markers.html">Markers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/thread-context.html">Thread Context</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/messages.html">Messages</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/implementation.html">Implementation</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/architecture.html">Architecture</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/config-intro.html">Configuration</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/configuration.html">Configuration file</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/appenders.html">Appenders</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/file.html">File appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/database.html">Database appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/layouts.html">Layouts</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/lookups.html">Lookups</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/filters.html">Filters</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/scripts.html">Scripts</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/jmx.html">JMX</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/extending.html">Extending</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/plugins.html">Plugins</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/performance.html">Performance</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/async.html">Asynchronous loggers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">References</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="plugin-reference.html">Plugin reference</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="javadoc.html">Java API reference</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Resources</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="faq.html">F.A.Q.</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a>
+ </li>
+ <li class="nav-item is-current-page" data-depth="1">
+ <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="development.html">Development</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="components.html">Components</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Related projects</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </nav>
+</div>
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li>Resources</li>
+ <li><a href="hibernate.html">Integrating with Hibernate</a></li>
+ </ul>
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/hibernate.adoc">Edit this Page</a></div>
+</div>
+ <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="4">
+ <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Integrating with Hibernate</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p><a href="https://hibernate.org">Hibernate</a> is an Object/Relational Mapping (ORM) solution for Java environments.
+It uses <a href="https://github.com/jboss-logging/jboss-logging">JBoss Logging</a> as its logging API.
+If you have a working <a href="manual/installation.html#impl-core" class="xref page">Log4j installation</a>, JBoss Logging requires no extra installation steps on your part, since it is shipped with an integrated bridge to Log4j API – see <a href="https://github.com/jboss-logging/jboss-logging/blob/main/README.adoc#supported-log-managers">Supported Log Managers by JBoss Logging</a> for more information.</p>
+</div>
+<details>
+<summary class="title">Struggling with the logging API, implementation, and bridge concepts? Click for an introduction.</summary>
+<div class="content">
+<div id="logging-api" class="dlist">
+<dl>
+<dt class="hdlist1">Logging API</dt>
+<dd>
+<p>A logging API is an interface your code or your dependencies directly logs against.
+It is required at compile-time.
+It is implementation agnostic to ensure that your application can write logs, but is not tied to a specific logging implementation.
+Log4j API, <a href="https://www.slf4j.org">SLF4J</a>, <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html">JUL (Java Logging)</a>, <a href="https://commons.apache.org/proper/commons-logging/">JCL (Apache Commons Logging)</a>, <a href="https://openjdk.org/jeps/264">JPL (Java Platform Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging">JBoss Logging</a> are major logging APIs.</p>
+</dd>
+</dl>
+</div>
+<div id="logging-impl" class="dlist">
+<dl>
+<dt class="hdlist1">Logging implementation</dt>
+<dd>
+<p>A logging implementation is only required at runtime and can be changed without the need to recompile your software.
+Log4j Core, <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html">JUL (Java Logging)</a>, <a href="https://logback.qos.ch">Logback</a> are the most well-known logging implementations.</p>
+</dd>
+</dl>
+</div>
+<div id="logging-bridge" class="dlist">
+<dl>
+<dt class="hdlist1">Logging bridge</dt>
+<dd>
+<p>Logging implementations accept input from a single logging API of their preference; Log4j Core from Log4j API, Logback from SLF4J, etc.
+A logging bridge is a simple logging implementation of a logging API that forwards all messages to a foreign logging API.
+Logging bridges allow a logging implementation to accept input from other logging APIs that are not their primary logging API.
+For instance, <code>log4j-slf4j2-impl</code> <em>bridges</em> SLF4J calls to Log4 API and effectively enables Log4j Core to accept input from SLF4J.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>To make things a little bit more tangible, consider the following visualization of a typical Log4j Core installation with bridges for an application:</p>
+</div>
+<div class="imageblock kroki">
+<div class="content">
+<img src="_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg" alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges">
+</div>
+<div class="title">Figure 1. Visualization of a typical Log4j Core installation with SLF4J, JUL, and JPL bridges</div>
+</div>
+</div>
+</details>
+</div>
+</div>
+<div class="sect1">
+<h2 id="config"><a class="anchor" href="#config"></a>Configuration</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>After successfully wiring Hibernate – to be precise, JBoss Logging – to log using Log4j API, you can fine-tune the verbosity of Hibernate loggers in your Log4j Core installation to accommodate your needs:</p>
+</div>
+<div id="_tabs_1" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_1_xml" class="tab">
+<p>XML</p>
+</li>
+<li id="_tabs_1_json" class="tab">
+<p>JSON</p>
+</li>
+<li id="_tabs_1_yaml" class="tab">
+<p>YAML</p>
+</li>
+<li id="_tabs_1_properties" class="tab">
+<p>Properties</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_1_xml--panel" class="tabpanel" aria-labelledby="_tabs_1_xml">
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/hibernate/log4j2.xml"><code>log4j2.xml</code></a> configuring Hibernate-specific loggers</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><Loggers>
+
+ <!-- Log just the SQL -->
+ <Logger name="org.hibernate.SQL" level="DEBUG"/>
+
+ <!-- Log JDBC bind parameters and extracted values
+
+ Warning! <i class="conum" data-value="1"></i><b>(1)</b>
+ JDBC bind parameters can contain sensitive data!
+ Passwords, credit card numbers, etc.
+ Use these logger configurations with care! -->
+ <!--
+ <Logger name="org.hibernate.type" level="TRACE"/>
+ <Logger name="org.hibernate.orm.jdbc.bind" level="TRACE"/>
+ <Logger name="org.hibernate.orm.jdbc.extract" level="TRACE"/>
+ --></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_1_json--panel" class="tabpanel" aria-labelledby="_tabs_1_json">
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/hibernate/log4j2.json"><code>log4j2.json</code></a> configuring Hibernate-specific loggers</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">"Loggers": {
+ "Logger": [
+
+ // Log just the SQL
+ {
+ "name": "org.hibernate.SQL",
+ "level": "DEBUG"
+ }
+
+ // Log JDBC bind parameters and extracted values
+ //
+ // Warning! <i class="conum" data-value="1"></i><b>(1)</b>
+ // JDBC bind parameters can contain sensitive data:
+ // Passwords, credit card numbers, etc.
+ // Use these logger configurations with care!
+ //{
+ // "name": "org.hibernate.type",
+ // "level": "TRACE"
+ //},
+ //{
+ // "name": "org.hibernate.orm.jdbc.bind",
+ // "level": "TRACE"
+ //},
+ //{
+ // "name": "org.hibernate.orm.jdbc.extract",
+ // "level": "TRACE"
+ //}</code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_1_yaml--panel" class="tabpanel" aria-labelledby="_tabs_1_yaml">
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/hibernate/log4j2.yaml"><code>log4j2.yaml</code></a> configuring Hibernate-specific loggers</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">Loggers:
+
+ Logger:
+
+ # Log just the SQL
+ - name: "org.hibernate.SQL"
+ level: "DEBUG"
+
+ # Log JDBC bind parameters and extracted values
+ #
+ # Warning! <i class="conum" data-value="1"></i><b>(1)</b>
+ # JDBC bind parameters can contain sensitive data!
+ # Passwords, credit card numbers, etc.
+ # Use these logger configurations with care!
+ #- name: "org.hibernate.type"
+ # level: "TRACE"
+ #- name: "org.hibernate.orm.jdbc.bind"
+ # level: "TRACE"
+ #- name: "org.hibernate.orm.jdbc.extract"
+ # level: "TRACE"</code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_1_properties--panel" class="tabpanel" aria-labelledby="_tabs_1_properties">
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/hibernate/log4j2.properties"><code>log4j2.properties</code></a> configuring Hibernate-specific loggers</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"># Log just the SQL
+logger.0.name = org.hibernate.SQL
+logger.0.level = DEBUG
+
+# Log JDBC bind parameters and extracted values
+#
+# Warning! <i class="conum" data-value="1"></i><b>(1)</b>
+# JDBC bind parameters can contain sensitive data!
+# Passwords, credit card numbers, etc.
+# Use these logger configurations with great care!
+#logger.1.name = org.hibernate.type
+#logger.1.level = TRACE
+#logger.2.name = org.hibernate.orm.jdbc.bind
+#logger.2.level = TRACE
+#logger.3.name = org.hibernate.orm.jdbc.bind
+#logger.3.level = TRACE</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Due to the sensitivity of the data involved, you are strongly advised to use these logger configurations <strong>only in development environments</strong>.</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>See <a href="https://docs.jboss.org/hibernate/orm/6.5/userguide/html_single/Hibernate_User_Guide.html#best-practices-logging">the Logging Best Practices section in Hibernate Manual</a> for further details.</p>
+</div>
+<div id="show-sql" class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>We strongly advise you to <strong>avoid using <a href="https://docs.jboss.org/hibernate/orm/6.5/userguide/html_single/Hibernate_User_Guide.html#settings-hibernate.show_sql">the <code>hibernate.show_sql</code> property</a>!</strong>
+(It maps to <code>spring.jpa.show-sql</code> in Spring Boot.)
+<code>hibernate.show_sql</code> writes to the standard error output stream, not to the logging API.
+Logger-based configuration exemplified above gives a finer-grained control over logging and integrates with the logging system.
+<a href="https://stackoverflow.com/questions/73734494/disabling-hibernate-console-log-in-spring-datajpatest">Combining <code>hibernate.show_sql</code> with logger-based configuration duplicates the logging effort.</a></p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</article>
+ </div>
+</main>
+</div>
+<footer class="footer">
+ <p>
+ Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
+ Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
+ </p>
+ <p>
+ Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
+ Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
+ </p>
+</footer>
+<!-- Matomo -->
+<script>
+ var _paq = window._paq = window._paq || [];
+ _paq.push(["disableCookies"]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="https://analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '42']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript>
+<!-- End Matomo Code -->
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+ </body>
+</html>
diff --git a/index.html b/index.html
new file mode 100644
index 0000000000..2fc012bfe1
--- /dev/null
+++ b/index.html
@@ -0,0 +1,483 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Apache Log4j :: Apache Log4j</title>
+ <link rel="canonical" href="https://logging.apache.org/log4j/2.x/index.html">
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="article">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+ <aside class="nav">
+ <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+ <nav class="nav-menu">
+ <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
+ <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="download.html">Download</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="release-notes.html">Release Notes</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/index.html">Manual</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/getting-started.html">Getting started</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/installation.html">Installation</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html">API</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#loggers">Loggers</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/eventlogging.html">Event Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/status-logger.html">Status Logger</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/logbuilder.html">Fluent API</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customloglevels.html">Levels</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/markers.html">Markers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/thread-context.html">Thread Context</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/messages.html">Messages</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/implementation.html">Implementation</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/architecture.html">Architecture</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/config-intro.html">Configuration</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/configuration.html">Configuration file</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/appenders.html">Appenders</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/file.html">File appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/database.html">Database appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/layouts.html">Layouts</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/lookups.html">Lookups</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/filters.html">Filters</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/scripts.html">Scripts</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/jmx.html">JMX</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/extending.html">Extending</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/plugins.html">Plugins</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/performance.html">Performance</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/async.html">Asynchronous loggers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">References</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="plugin-reference.html">Plugin reference</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="javadoc.html">Java API reference</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Resources</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="faq.html">F.A.Q.</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="development.html">Development</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="components.html">Components</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Related projects</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </nav>
+</div>
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="index.html" class="home-link is-current"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li><a href="index.html">Apache Log4j</a></li>
+ </ul>
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/index.adoc">Edit this Page</a></div>
+</div>
+ <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="4">
+ <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Apache Log4j</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Apache Log4j is a versatile, industrial-grade Java logging framework composed of an API, its implementation, and components to assist the deployment for various use cases.
+The project is actively maintained by a <a href="https://logging.apache.org/team-list.html">team</a> of volunteers and <a href="https://logging.apache.org/support.html">support</a>ed by a big community.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="shortcuts"><a class="anchor" href="#shortcuts"></a>Shortcuts</h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p><a href="manual/getting-started.html" class="xref page">Getting started</a></p>
+</li>
+<li>
+<p><a href="manual/installation.html" class="xref page">How can I install Log4j? Which dependencies are needed?</a></p>
+</li>
+<li>
+<p><a href="manual/configuration.html" class="xref page">How can I configure my <code>log4j2.xml</code>?</a></p>
+</li>
+<li>
+<p><a href="release-notes.html" class="xref page">Where are the release notes?</a></p>
+</li>
+<li>
+<p><a href="https://logging.apache.org/support.html"><strong>I need help!</strong></a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="features"><a class="anchor" href="#features"></a>Features</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Below, we share some highlights from Log4j features.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Batteries included</dt>
+<dd>
+<p>Log4j bundles a rich set of components to assist various use cases.</p>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="manual/appenders.html" class="xref page">Appenders</a> targeting files, network sockets, databases, SMTP servers, etc.</p>
+</li>
+<li>
+<p><a href="manual/layouts.html" class="xref page">Layouts</a> that can render CSV, HTML, JSON, Syslog, etc. formatted outputs</p>
+</li>
+<li>
+<p><a href="manual/filters.html" class="xref page">Filters</a> based on log event rates, regular expressions, scripts, time, etc.</p>
+</li>
+<li>
+<p><a href="manual/lookups.html" class="xref page">Lookups</a> for accessing system properties, environment variables, log event fields, etc.</p>
+</li>
+</ul>
+</div>
+</dd>
+<dt class="hdlist1">Reliability</dt>
+<dd>
+<p>Log4j is built with solid reliability in mind.
+It can automatically reload its configuration upon modification and will do so without losing log events while reconfiguration occurs.</p>
+</dd>
+<dt class="hdlist1">Performance</dt>
+<dd>
+<p>When configured correctly, Log4j can deliver excelling performance without almost any burden on the Java garbage collector, and it will do so without sacrificing reliability.
+Check out the <a href="manual/performance.html" class="xref page">Performance</a> page for details.</p>
+</dd>
+<dt class="hdlist1">Extensibility</dt>
+<dd>
+<p>Log4j contains a fully-fledged <a href="manual/plugins.html" class="xref page">plugin support</a> that users can leverage to extend functionality.
+You can easily add your components (layouts, appenders, filters, etc.) or customize existing ones (e.g., adding new directives to <a href="manual/pattern-layout.html#extending" class="xref page">Pattern Layout</a> or <a href="manual/json-template-layout.html#extending" class="xref page">JSON Template Layout</a>).
+Check out the <a href="manual/extending.html" class="xref page">Extending Log4j</a> page.</p>
+</dd>
+<dt class="hdlist1">Powerful API</dt>
+<dd>
+<p>Log4j is a logging system where the API (called Log4j API) and its implementation (called Log4j Core) is distinctly separate from each other.
+<a href="manual/api.html" class="xref page">Log4j API</a> provides the most feature-rich logging facade in the market; support for various <code>Message</code> types (such as <code>Object</code> or <code>Map</code>) besides plain <code>String</code>, lambda expressions, parameterized logging, markers, levels, diagnostic contexts (aka. MDC/NDC), etc.
+Log4j team takes backward compatibility very seriously and makes sure people relying on Log4j API gets a logging facade that is straightforward to use in a correct and future-proof way.
+Check out the <a href="manual/api.html" class="xref page">Java API</a>,
+<a href="https://logging.apache.org/log4j/kotlin/index.html">Kotlin API</a>
+and
+<a href="https://logging.apache.org/log4j/scala/index.html">Scala API</a>
+pages for further information.</p>
+</dd>
+<dt class="hdlist1">No vendor lock-in</dt>
+<dd>
+<p>Log4j API is a generic logging facade for various logging frameworks.
+While Log4j Core implements it at its fullest, you can easily switch to other implementations such as Logback or JUL (<code>java.util.logging</code>).</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</article>
+ </div>
+</main>
+</div>
+<footer class="footer">
+ <p>
+ Copyright © 1999-2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.
+ Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>.
+ </p>
+ <p>
+ Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation.
+ Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
+ </p>
+</footer>
+<!-- Matomo -->
+<script>
+ var _paq = window._paq = window._paq || [];
+ _paq.push(["disableCookies"]);
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="https://analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '42']);
+ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+</script>
+<noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript>
+<!-- End Matomo Code -->
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+ </body>
+</html>
diff --git a/jakarta.html b/jakarta.html
new file mode 100644
index 0000000000..3726b6e185
--- /dev/null
+++ b/jakarta.html
@@ -0,0 +1,1741 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ <title>Integrating with Jakarta EE :: Apache Log4j</title>
+ <link rel="canonical" href="https://logging.apache.org/log4j/2.x/jakarta.html">
+ <meta name="generator" content="Antora 3.2.0-alpha.6">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+ /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+ .doc .admonitionblock.important .icon { background-color: #f70; }
+ .doc .admonitionblock.warning .icon { background-color: #e40046; }
+ /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */
+ .doc h1 { font-size: 1.9rem; }
+ .doc h2 { font-size: 1.7rem; }
+ .doc h3 { font-size: 1.5rem; font-weight: 400; }
+ .doc h4 { font-size: 1.3rem; font-weight: 500; }
+ .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+ .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+ /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */
+ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+ .doc pre { font-size: 0.7rem; }
+ .doc .colist { font-size: 0.75rem; }
+ /* Make links more visible: */
+ .doc a { text-decoration: underline; }
+ .doc a code { text-decoration: underline; color: #1565c0; }
+ /* Tab header fonts aren't rendered good, adjusting the font weight: */
+ .tablist > ul li { font-weight: 500; }
+ /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */
+ .toc .toc-menu li[data-level="4"] a {
+ padding-left: 2.75rem;
+ }
+ /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */
+ .hljs-string {
+ color: #0f8532;
+ }
+</style>
+ </head>
+ <body class="article">
+<header class="header">
+ <nav class="navbar">
+ <div class="navbar-brand">
+ <div class="navbar-item">
+ <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/>
+ </div>
+ </div>
+ <div id="topbar-nav" class="navbar-menu">
+ <div class="navbar-end">
+ <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a>
+ </div>
+ </div>
+ </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+ <aside class="nav">
+ <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+ <nav class="nav-menu">
+ <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
+ <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="download.html">Download</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="release-notes.html">Release Notes</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="https://logging.apache.org/support.html">Support</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="https://logging.apache.org/security.html">Security</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/index.html">Manual</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/getting-started.html">Getting started</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="manual/installation.html">Installation</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html">API</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#loggers">Loggers</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/eventlogging.html">Event Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/status-logger.html">Status Logger</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/logbuilder.html">Fluent API</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customloglevels.html">Levels</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/markers.html">Markers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/thread-context.html">Thread Context</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/messages.html">Messages</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/implementation.html">Implementation</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="2">
+ <a class="nav-link" href="manual/architecture.html">Architecture</a>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/config-intro.html">Configuration</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/configuration.html">Configuration file</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/appenders.html">Appenders</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/file.html">File appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/database.html">Database appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/layouts.html">Layouts</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a>
+ </li>
+ <li class="nav-item" data-depth="4">
+ <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/lookups.html">Lookups</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/filters.html">Filters</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/scripts.html">Scripts</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/jmx.html">JMX</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/extending.html">Extending</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/plugins.html">Plugins</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="2">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="manual/performance.html">Performance</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/async.html">Asynchronous loggers</a>
+ </li>
+ <li class="nav-item" data-depth="3">
+ <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">References</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="plugin-reference.html">Plugin reference</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="javadoc.html">Java API reference</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Resources</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="faq.html">F.A.Q.</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a>
+ </li>
+ <li class="nav-item is-current-page" data-depth="1">
+ <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="development.html">Development</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <a class="nav-link" href="components.html">Components</a>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a>
+ </li>
+</ul>
+ </li>
+ <li class="nav-item" data-depth="0">
+ <button class="nav-item-toggle"></button>
+ <span class="nav-text">Related projects</span>
+<ul class="nav-list">
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a>
+ </li>
+ <li class="nav-item" data-depth="1">
+ <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a>
+ </li>
+</ul>
+ </li>
+</ul>
+ </nav>
+</div>
+ </div>
+ </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+ <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+ <ul>
+ <li><a href="index.html">Home</a></li>
+ <li>Resources</li>
+ <li><a href="jakarta.html">Integrating with Jakarta EE</a></li>
+ </ul>
+</nav>
+<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/jakarta.adoc">Edit this Page</a></div>
+</div>
+ <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="4">
+ <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Integrating with Jakarta EE</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>In a Jakarta EE environment, there are two possible approaches to logging:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Each application can use their own copy of Log4j Core and include <code>log4j-core</code> in the WAR or EAR archive.</p>
+</li>
+<li>
+<p>Applications can also use a single copy of Log4j Core that must be installed globally on the application server.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>While the first approach is the easiest to implement, it has some limitations:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Shared libraries</dt>
+<dd>
+<p>Log events emitted by each application and the libraries bundled with it will be handled by Log4j Core,
+but events related to the application emitted by a <strong>shared</strong> library (e.g. JPA implementation) will be handled by the application server.
+To diagnose a problem with the application, you might need to look into multiple log files.</p>
+</dd>
+<dt class="hdlist1">Separate log files</dt>
+<dd>
+<p>Each application must use a <strong>different</strong> log file to prevent problems with concurrent access to the same file by multiple applications.
+Problems may arise, especially if a <a href="manual/appenders/rolling-file.html" class="xref page">rolling file appender</a> is used.</p>
+</dd>
+<dt class="hdlist1">Lifecycle</dt>
+<dd>
+<p>Web applications have a different lifecycle from the application server.
+Additional care is required to stop Log4j Core when the application is stopped.
+See <a href="#log4j-jakarta-web">Integrating with web applications</a> for more details.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The second approach requires changes to the configuration of the application server,
+but produces better results in terms of separating log events of different applications.
+See <a href="#sharing">Sharing Log4j Core between Web Applications</a> for more details.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j-jakarta-web"><a class="anchor" href="#log4j-jakarta-web"></a>Integrating with web applications</h2>
+<div class="sectionbody">
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>To avoid problems,
+some Log4j API and Log4j Core features are automatically disabled when running in a Jakarta EE environment.
+Most notably:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>the usage of <code>ThreadLocal</code> for object pooling is disabled.</p>
+</li>
+<li>
+<p>a web-safe implementation of
+<a href="javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html"><code>ThreadContextMap</code></a> is used.</p>
+</li>
+<li>
+<p>JMX notifications are sent synchronously.</p>
+</li>
+<li>
+<p>the JVM shutdown hook is disabled.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>See <a href="manual/systemproperties.html#log4j2.isWebapp" class="xref page"><code>log4j2.isWebapp</code></a> for more details.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Using a logging implementation like <strong>Log4j Core</strong> in a Jakarta EE application requires particular care.
+Since the lifecycle of a container or web application is independent of the lifecycle of the JVM, it’s important for logging resources to be properly cleaned up (database connections closed, files closed, etc.) when the container or web application shuts down.</p>
+</div>
+<div class="paragraph">
+<p>To properly synchronize the lifecycles of Log4j Core and Jakarta EE applications,
+an additional <strong>Log4j Web</strong> artifact is provided.</p>
+</div>
+<div class="sect2">
+<h3 id="log4j-jakarta-web-installation"><a class="anchor" href="#log4j-jakarta-web-installation"></a>Installation</h3>
+<div class="paragraph">
+<p>To install Log4j Web in your web application, you need to add it as a runtime dependency:</p>
+</div>
+<div id="_tabs_1" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_1_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_1_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_1_maven--panel" class="tabpanel" aria-labelledby="_tabs_1_maven">
+<div class="paragraph">
+<p>We assume you use <a href="components.html#log4j-bom" class="xref page"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-jakarta-web</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_1_gradle--panel" class="tabpanel" aria-labelledby="_tabs_1_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="components.html#log4j-bom" class="xref page"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-jakarta-web'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<details>
+<summary class="title">Click here if you are you using Jakarta EE 8 or any version of Java EE?</summary>
+<div class="content">
+<div class="paragraph">
+<p>Jakarta EE 8 and all Java EE applications servers use the legacy <code>javax</code> package prefix instead of <code>jakarta</code>.
+If you are using those application servers, you should replace the dependencies above with:</p>
+</div>
+<div id="_tabs_2" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_2_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_2_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_2_maven--panel" class="tabpanel" aria-labelledby="_tabs_2_maven">
+<div class="paragraph">
+<p>We assume you use <a href="components.html#log4j-bom" class="xref page"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-web</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_2_gradle--panel" class="tabpanel" aria-labelledby="_tabs_2_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="components.html#log4j-bom" class="xref page"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-web'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</details>
+<div class="paragraph">
+<p>If you are writing a Servlet 3.0 or later application, Apache Log4j Web will register a
+<a href="https://jakarta.ee/specifications/servlet/5.0/apidocs/jakarta/servlet/servletcontainerinitializer"><code>ServletContainerInitializer</code></a>
+that takes care of configuring the Log4j lifecycle for you. Under the hood this will:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>initialize Log4j Core with the correct configuration file.</p>
+</li>
+<li>
+<p>register a <code>Log4jServletContextListener</code> to automatically shut down Log4j Core, when the application shuts down.</p>
+</li>
+<li>
+<p>register a <code>Log4jServletFilter</code> to enable the <a href="manual/lookups.html#WebLookup" class="xref page">web lookup</a>.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>See also <a href="#web-application-specific">Application server specific notes</a>.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>While the Servlet Specification allows web fragments to automatically add context listeners, it does not give any guarantees regarding the order in which those listeners are executed
+(see <a href="https://jakarta.ee/specifications/servlet/5.0/jakarta-servlet-spec-5.0#Assembling_the_descriptor">Section 8.2.3</a>).</p>
+</div>
+<div class="paragraph">
+<p>If other context listeners in your application use logging, you need to make sure that <code>Log4jServletContextListener</code> is the last listener to be executed at shutdown.
+To do it, you must create a <code>web.xml</code> descriptor and add the <code>Log4jServletContextListener</code> explicitly as the <strong>first</strong> context listener:</p>
+</div>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/web.xml"><code>web.xml</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><listener>
+ <description>Handles Log4j Core lifecycle</description>
+ <listener-class>
+ org.apache.logging.log4j.web.Log4jServletContextListener
+ </listener-class>
+</listener></code></pre>
+</div>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="sect3">
+<h4 id="log4j-jakarta-manual-instalation"><a class="anchor" href="#log4j-jakarta-manual-instalation"></a>Manual installation</h4>
+<div class="paragraph">
+<p>If you are maintaining an older Servlet 2.5 (or earlier) application,
+or if you disabled the <a href="#isLog4jAutoInitializationDisabled">servlet container initializer</a>.</p>
+</div>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/web.xml"><code>web.xml</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><listener>
+ <description>Handles Log4j Core lifecycle</description>
+ <listener-class>
+ org.apache.logging.log4j.web.Log4jServletContextListener
+ </listener-class>
+</listener>
+<filter>
+ <description>Adds Log4j Core specific attributes to each request</description>
+ <filter-name>log4jServletFilter</filter-name>
+ <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
+</filter>
+<filter-mapping>
+ <filter-name>log4jServletFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ <dispatcher>REQUEST</dispatcher>
+ <dispatcher>FORWARD</dispatcher>
+ <dispatcher>INCLUDE</dispatcher>
+ <dispatcher>ERROR</dispatcher>
+ <!-- Servlet 3.0 with disabled auto-initialization; not supported in 2.5
+ <dispatcher>ASYNC</dispatcher>
+ -->
+</filter-mapping></code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="configuration"><a class="anchor" href="#configuration"></a>Configuration</h3>
+<div class="paragraph">
+<p>Log4j Web provides many configuration options to finely tune its installation.
+These configuration options should be specified as
+<a href="https://jakarta.ee/specifications/servlet/5.0/jakarta-servlet-spec-5.0#initialization-parameters">servlet context initialization parameters</a>.</p>
+</div>
+<div class="sect3">
+<h4 id="isLog4jAutoInitializationDisabled"><a class="anchor" href="#isLog4jAutoInitializationDisabled"></a><code>isLog4jAutoInitializationDisabled</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>If set to <code>true</code>, the <code>Log4jServletContainerInitializer</code> will be disabled, which prevents the automatic registration of both the <code>Log4jServletContextListener</code> and <code>Log4jServletFilter</code>.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="isLog4jAutoShutdownDisabled"><a class="anchor" href="#isLog4jAutoShutdownDisabled"></a><code>isLog4jAutoShutdownDisabled</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>If set to <code>true</code>, the <code>Log4jServletContextListener</code> will not register a <code>Log4jServletContextListener</code> to handle the web application shut down.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="log4j.stop.timeout.timeunit"><a class="anchor" href="#log4j.stop.timeout.timeunit"></a><code>log4j.stop.timeout.timeunit</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html"><code>TimeUnit</code></a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html#SECONDS"><code>SECONDS</code></a></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Specifies the <code>TimeUnit</code> used for the shut-down delay.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="log4j.stop.timeout"><a class="anchor" href="#log4j.stop.timeout"></a><code>log4j.stop.timeout</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>long</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>30</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>It specifies the duration of the shut-down delay.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="log4jContextName"><a class="anchor" href="#log4jContextName"></a><code>log4jContextName</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><em>automatically computed</em></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Used to specify the name of the logger context.</p>
+</div>
+<div class="paragraph">
+<p>If <a href="#jndi-configuration"><code>JndiContextSelector</code></a> is used, this parameter <strong>must</strong> be explicitly provided. Otherwise, the default value is:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>the servlet context name, if present,</p>
+</li>
+<li>
+<p>the servlet context path, including the leading <code>/</code>, otherwise.</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect3">
+<h4 id="isLog4jContextSelectorNamed"><a class="anchor" href="#isLog4jContextSelectorNamed"></a><code>isLog4jContextSelectorNamed</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Must be set to <code>true</code> to use the <a href="#jndi-configuration">JNDI configuration</a>.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="log4jConfiguration"><a class="anchor" href="#log4jConfiguration"></a><code>log4jConfiguration</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://docs.oracle.com/javase/8/docs/api/java/net/URI.html"><code>URI</code></a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The location of a Log4j Core configuration file.
+If the provided value is not an <strong>absolute</strong> URI, Log4j interprets it as:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>the path to an existing
+<a href="https://jakarta.ee/specifications/servlet/5.0/apidocs/jakarta/servlet/servletcontext#getResource(java.lang.String)">servlet context resource</a>,</p>
+</li>
+<li>
+<p>the path to an existing file,</p>
+</li>
+<li>
+<p>the path to a
+<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html#getResource-java.lang.String-">classpath resource</a>.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>If no value is provided:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Log4j Web looks for a servlet context resource named <code>/WEB-INF/log4j2-<contextName>.<extension></code>, where <code><contextName></code> is the name of the logger context,</p>
+</li>
+<li>
+<p>if no such file exists it looks for a servlet context resource named <code>/WEB-INF/log4j2.<extension></code>,</p>
+</li>
+<li>
+<p>otherwise, it searches for a configuration file on the classpath using the usual <a href="https://logging.apache.org/log4j/2.x/manual/configuration.html#automatic-configuration">automatic configuration procedure</a>.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="async"><a class="anchor" href="#async"></a>Asynchronous requests and threads</h3>
+<div class="paragraph">
+<p>In order for the
+<a href="manual/lookups.html#WebLookup" class="xref page">web lookup</a>
+to work correctly, Log4j must be able to always identify the <code>ServletContext</code> used by the current thread.
+When standard requests, forwards, inclusions, and error resources are processed,
+the <code>Log4jServletFilter</code> binds the <code>LoggerContext</code> to the thread handling the request,
+and you don’t have to do anything.</p>
+</div>
+<div class="paragraph">
+<p>The handling of asynchronous requests is however more tricky, since it allows you to execute code on threads that were not prepared by <code>Log4jServletFilter</code>.
+Such a situation occurs, for example, if your code was started using the
+<a href="https://jakarta.ee/specifications/servlet/5.0/apidocs/jakarta/servlet/asynccontext#start(java.lang.Runnable)"><code>AsyncContext.start(Runnable)</code></a>
+method.</p>
+</div>
+<div class="paragraph">
+<p>To successfully propagate the logger context along asynchronous calls, the
+<a href="javadoc/log4j-jakarta-web/org/apache/logging/log4j/web/WebLoggerContextUtils.html"><code>WebLoggerContextUtils</code></a>
+helper class is made available.
+Using this class you can either decorate a <code>Runnable</code> with method calls that bind the appropriate logger context to the thread:</p>
+</div>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/AsyncServlet.java"><code>AsyncServlet.java</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">AsyncContext asyncContext = req.startAsync();
+asyncContext.start(WebLoggerContextUtils.wrapExecutionContext(getServletContext(), () -> {
+ // Put your logic here
+}));</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>or, if more flexibility is required, you can apply the same logic by using
+<a href="javadoc/log4j-jakarta-web/org/apache/logging/log4j/web/Log4jWebSupport.html"><code>Log4jWebSupport</code></a>:</p>
+</div>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/AsyncServlet.java"><code>AsyncServlet.java</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">AsyncContext asyncContext = req.startAsync();
+Log4jWebSupport webSupport = WebLoggerContextUtils.getWebLifeCycle(getServletContext());
+asyncContext.start(() -> {
+ try {
+ webSupport.setLoggerContext();
+ // Put your logic here
+ } finally {
+ webSupport.clearLoggerContext();
+ }
+});</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="log4j-taglib"><a class="anchor" href="#log4j-taglib"></a>Logging in JavaServer Pages</h3>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p><strong>The Log4j Tag library is planned to be removed in the next major release!</strong>
+If you are using this library, please get in touch with the Log4j maintainers using <a href="https://logging.apache.org/support.html">the official support channels</a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>To help users add logging statements to JavaServer Pages, Log4j provides a JSP tag library modeled after the
+<a href="https://web.archive.org/web/20140215182415/http://jakarta.apache.org/taglibs/log/">Jakarta Commons Log Tag library</a>.
+To use it, you need to add the following runtime dependency to your web application project:</p>
+</div>
+<div id="_tabs_3" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_3_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_3_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_3_maven--panel" class="tabpanel" aria-labelledby="_tabs_3_maven">
+<div class="paragraph">
+<p>We assume you use <a href="components.html#log4j-bom" class="xref page"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-taglib</artifactId>
+ <scope>runtime</scope>
+</dependency></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_3_gradle--panel" class="tabpanel" aria-labelledby="_tabs_3_gradle">
+<div class="paragraph">
+<p>We assume you use <a href="components.html#log4j-bom" class="xref page"><code>log4j-bom</code></a> for dependency management.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-groovy hljs" data-lang="groovy">runtimeOnly 'org.apache.logging.log4j:log4j-taglib'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="paragraph">
+<p>and add the following declaration to your JSP pages:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-jsp hljs" data-lang="jsp"><%@ taglib prefix="log4j" uri="http://logging.apache.org/log4j/tld/log" %></code></pre>
+</div>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The Log4j Taglib component is deprecated and is scheduled for removal in Log4j 3.</p>
+</div>
+<div class="paragraph">
+<p>Currently, it only works with JavaServer Pages 2.3 and previous releases,
+and no version compatible with Jakarta Server Pages 3.0 is available.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The Log4j Taglib library defines a tag for most
+<a href="javadoc/log4j-api/org/apache/logging/log4j/Logger.html"><code>Logger</code></a>
+methods, including:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>simple and parameterized log statements:</p>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/taglib.jsp"><code>taglib.jsp</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><log4j:debug message="Simple message"/>
+<log4j:info message="Hello {}!" p0="${param.who}"/>
+<log4j:warn message="Message with marker" marker="${requestScope.marker}"/></code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>flow tracing statements:</p>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/taglib.jsp"><code>taglib.jsp</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><log4j:entry p0="${param.who}"/>
+<log4j:exit/></code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>catching and throwing statements:</p>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/taglib.jsp"><code>taglib.jsp</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><c:catch var="exception">
+ <%= 5 / 0 %>
+</c:catch>
+<c:if test="${exception != null}">
+ <log4j:catching exception="${exception}"/>
+</c:if></code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>tags to test the current log level:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><log4j:ifEnabled level="INFO">
+ <code>INFO</code> is enabled.
+</log4j:ifEnabled></code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>tags to set the name of the logger used:</p>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/taglib.jsp"><code>taglib.jsp</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><log4j:setLogger logger="example.jsp"/></code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>a <code>dump</code> tag that prints the contents of a JSP scope:</p>
+<div class="listingblock">
+<div class="title">Snippet from an example <a href="https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples/manual/webapp/taglib.jsp"><code>taglib.jsp</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><log4j:dump scope="request"/></code></pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="web-application-specific"><a class="anchor" href="#web-application-specific"></a>Application server specific notes</h3>
+<div id="web-application-wildfly" class="dlist">
+<dl>
+<dt class="hdlist1">WildFly</dt>
+<dd>
+<div class="paragraph">
+<p>WildFly implicitly adds a shared copy of <code>log4j-api</code> to each web application deployment.
+This copy of <code>log4j-api</code> is configured to forward all events to WildFly’s centralized logging system and does <strong>not</strong> use the copy of Log4j Core bundled with the web application.</p>
+</div>
+<div class="paragraph">
+<p>To use Log4j Core, you need to set the <code>add-logging-api-dependencies</code> attribute of the logging subsystem to <code>false</code>.
+See <a href="https://docs.wildfly.org/32/Admin_Guide.html#logging-attributes">WildFly documentation</a> for more details.</p>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="sharing"><a class="anchor" href="#sharing"></a>Sharing Log4j Core between Web Applications</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Since Log4j Core supports multiple <a href="manual/architecture.html#LoggerContext" class="xref page">logger contexts</a>, it is possible to share a single instance of Log4j Core
+without losing the ability to configure logging for each application separately.</p>
+</div>
+<div class="paragraph">
+<p>Sharing Log4j Core has two main advantages:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>You can send log statements from multiple applications to the same log file.
+Under the hood, Log4j Core will use a single
+<a href="manual/architecture.html#AbstractManager" class="xref page">manager</a>
+per file, which will serialize concurrent access from multiple applications.</p>
+</li>
+<li>
+<p>You can capture log statements issued by other shared libraries, so you don’t have to look for them in the global application server log.</p>
+</li>
+</ul>
+</div>
+<div class="sect2">
+<h3 id="sharing-setup"><a class="anchor" href="#sharing-setup"></a>Setup</h3>
+<div class="paragraph">
+<p>To share Log4j Core between applications, you need to share at least these two JAR files:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-api/${log4j-api.version}"><code>log4j-api</code></a></p>
+</li>
+<li>
+<p><a href="https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-core/2.24.1"><code>log4j-core</code></a></p>
+</li>
+<li>
+<p><a href="https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-jakarta-web/2.24.1"><code>log4j-jakarta-web</code></a>
+(or
+<a href="https://central.sonatype.com/artifact/org.apache.logging.log4j/log4j-web/2.24.1"><code>log4j-web</code></a>
+if you use a Java EE application server)</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Since sharing libraries between applications is not part of the Jakarta EE standard, the instructions are specific to each application server:</p>
+</div>
+<div id="_tabs_4" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_4_glassfish" class="tab">
+<p>GlassFish</p>
+</li>
+<li id="_tabs_4_jetty" class="tab">
+<p>Jetty</p>
+</li>
+<li id="_tabs_4_openliberty" class="tab">
+<p>OpenLiberty</p>
+</li>
+<li id="_tabs_4_payara" class="tab">
+<p>Payara</p>
+</li>
+<li id="_tabs_4_tomcat" class="tab">
+<p>Tomcat</p>
+</li>
+<li id="_tabs_4_wildfly" class="tab">
+<p>WildFly</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_4_glassfish--panel" class="tabpanel" aria-labelledby="_tabs_4_glassfish">
+<div class="paragraph">
+<p>In GlassFish, you can add those libraries to the <em>common classloader</em>.
+See <a href="https://glassfish.org/docs/latest/application-development-guide.html#circumventing-class-loader-isolation">GlassFish documentation</a> for more details.</p>
+</div>
+</div>
+<div id="_tabs_4_jetty--panel" class="tabpanel" aria-labelledby="_tabs_4_jetty">
+<div class="paragraph">
+<p>Recent versions of Jetty have a <code>logging-log4j2</code> module that can be easily enabled to share Log4j Core between applications and to use Log4j Core for the Jetty server itself.
+See <a href="https://jetty.org/docs/jetty/12/operations-guide/modules/index.html">Jetty Modules documentation</a> for more details.</p>
+</div>
+</div>
+<div id="_tabs_4_openliberty--panel" class="tabpanel" aria-labelledby="_tabs_4_openliberty">
+<div class="paragraph">
+<p>In OpenLiberty, you can add Log4j as a <em>global library</em>.
+See <a href="https://openliberty.io/docs/latest/class-loader-library-config.html#_configure_global_libraries">OpenLiberty documentation</a> for more details.</p>
+</div>
+</div>
+<div id="_tabs_4_payara--panel" class="tabpanel" aria-labelledby="_tabs_4_payara">
+<div class="paragraph">
+<p>See <a href="https://docs.payara.fish/community/docs/Technical%20Documentation/Payara%20Server%20Documentation/Server%20Configuration%20And%20Management/Classloading/Standard%20Classloading.html#common-libraries">Payara Common Libraries documentation</a>.</p>
+</div>
+</div>
+<div id="_tabs_4_tomcat--panel" class="tabpanel" aria-labelledby="_tabs_4_tomcat">
+<div class="paragraph">
+<p>In Tomcat, you can use the <em>common classloader</em>.
+See <a href="https://tomcat.apache.org/tomcat-11.0-doc/class-loader-howto.html">Tomcat classloader documentation</a> for more details.</p>
+</div>
+</div>
+<div id="_tabs_4_wildfly--panel" class="tabpanel" aria-labelledby="_tabs_4_wildfly">
+<div class="paragraph">
+<p>You can install Log4j as a <em>global module</em> or in a <em>global directory</em>.
+See <a href="https://docs.wildfly.org/32/Admin_Guide.html#EE_Application_Deployment_Configuration">WildFly EE Application Deployment documentation</a> for more details.</p>
+</div>
+<div class="paragraph">
+<p>Check also the <a href="#web-application-wildfly">WildFly note above</a>.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Web application classloaders (see
+<a href="https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0#web-application-class-loader">Servlet Specification 10.7.2</a>
+) use a <em>"parent last"</em> delegation strategy, but prevent application from overriding implementation classes provided by the container.</p>
+</div>
+<div class="paragraph">
+<p>If you share Log4j between applications and the applications themselves contain Log4j Core, the logging behavior depends on the application server.
+Some application servers will use the shared instance (e.g., WildFly), while others will use the application instance (e.g., Tomcat).
+There are two solutions to this problem:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>you can remove Log4j from the WAR or EAR archive:</p>
+<div id="_tabs_5" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_5_maven" class="tab">
+<p>Maven</p>
+</li>
+<li id="_tabs_5_gradle" class="tab">
+<p>Gradle</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_5_maven--panel" class="tabpanel" aria-labelledby="_tabs_5_maven">
+<div class="paragraph">
+<p>You can declare the
+<a href="https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope">scope</a>
+of all Log4j libraries as <code>provided</code>.</p>
+</div>
+</div>
+<div id="_tabs_5_gradle--panel" class="tabpanel" aria-labelledby="_tabs_5_gradle">
+<div class="paragraph">
+<p>You can add <code>log4j-api</code> to the <code>providedCompile</code> configuration, while <code>log4j-core</code> to the <code>providedRuntime</code> configuration.
+See the <a href="https://docs.gradle.org/current/userguide/war_plugin.html#sec:war_dependency_management">Gradle WAR plugin</a> for more details.</p>
+</div>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>you can use an application-server-specific configuration option to delegate the loading of Log4j API to the parent classloader.</p>
+</li>
+</ul>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="log-separation"><a class="anchor" href="#log-separation"></a>Log separation</h3>
+<div class="paragraph">
+<p>When using a shared instance of Log4j Core,
+you might be interested in identifying the application associated with a given log event.
+Log4j Core provides a mechanism to split all
+<a href="javadoc/log4j-api/org/apache/logging/log4j/Logger.html"><code>Logger</code></a>
+instances into logging domains called
+<a href="manual/architecture.html#LoggerContext" class="xref page"><code>LoggerContext</code></a>s.
+You have therefore two ways to separate log events:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>You can create a separate logger context for each web application and one context for the common libraries.
+See <a href="#multiple-contexts">Multiple logger contexts</a> for more details.</p>
+</li>
+<li>
+<p>You can also use a <strong>single</strong> logger context for all log events, but use
+<a href="manual/lookups.html" class="xref page">lookups</a> to add context data to your log events.
+See <a href="#single-context">Single logger context</a> for more details.</p>
+</li>
+</ol>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>These two approaches deliver similar results for log events generated by the web applications themselves or the libraries
+bundled in the WAR or EAR archive.</p>
+</div>
+<div class="paragraph">
+<p>Differences between these approaches appear in the handling of <strong>shared</strong> libraries.
+There are two kinds of shared libraries:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Shared libraries that use <strong>static</strong> <code>Logger</code> fields.
+These libraries will always use the same logger context, which will not be one of the per-application contexts.</p>
+<div class="paragraph">
+<p>This kind includes all the shared libraries, which were not written with Jakarta EE in mind.</p>
+</div>
+</li>
+<li>
+<p>Shared libraries that use <strong>instance</strong> <code>Logger</code> fields.
+These libraries will use the logger context associated with the web application that uses them.</p>
+<div class="paragraph">
+<p>Application server implementations usually use instance <code>Logger</code> fields.</p>
+</div>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>Since the first kind of libraries is more common,
+counterintuitively the <a href="#single-context">Single logger context</a> approach will usually give better results than the <a href="#multiple-contexts">Multiple logger contexts</a> approach.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="sect3">
+<h4 id="single-context"><a class="anchor" href="#single-context"></a>Single logger context</h4>
+<div class="paragraph">
+<p>By default, Log4j Core creates a separate logger context per classloader.
+To use a single logger context, you need to set the
+<a href="manual/systemproperties.html#log4j2.contextSelector" class="xref page"><code>log4j2.contextSelector</code></a>
+system property to:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>either
+<a href="javadoc/log4j-core/org/apache/logging/log4j/core/selector/BasicContextSelector.html"><code>org.apache.logging.log4j.core.selector.BasicContextSelector</code></a>
+to use synchronous loggers,</p>
+</li>
+<li>
+<p>or
+<a href="javadoc/log4j-core/org/apache/logging/log4j/core/async/BasicAsyncLoggerContextSelector.html"><code>org.apache.logging.log4j.core.async.BasicAsyncLoggerContextSelector</code></a>
+to use asynchronous loggers.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>In this approach, you must use <a href="manual/lookups.html" class="xref page">lookups</a> to register the application that generated a log event.
+The most useful lookups in this case are:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Web lookup</dt>
+<dd>
+<p>It does not require any setup, but it is available only after <code>Log4jServletFilter</code> has been executed.
+Some log events pertinent to a web application can be unmarked.
+See <a href="manual/lookups.html#WebLookup" class="xref page">web lookup</a> for more information.</p>
+</dd>
+<dt class="hdlist1">JNDI lookup</dt>
+<dd>
+<p>It covers a larger part of the handling of a request, but it requires additional setup to export the name of the application via JNDI.
+See <a href="manual/lookups.html#JndiLookup" class="xref page">JNDI lookup</a> for more information.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>When using a single logger context, you choose between:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Logging all events to a single appender.
+We strongly recommend using a structured layout (e.g., <a href="manual/json-template-layout.html" class="xref page">JSON Template Layout</a>) with an additional field capturing the Servlet context name.
+This would allow separation of application logs by filtering on the context name.
+The following example demonstrates this scheme using a Socket Appender writing to Elasticsearch:</p>
+<div id="_tabs_6" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_6_xml" class="tab">
+<p>XML</p>
+</li>
+<li id="_tabs_6_json" class="tab">
+<p>JSON</p>
+</li>
+<li id="_tabs_6_yaml" class="tab">
+<p>YAML</p>
+</li>
+<li id="_tabs_6_properties" class="tab">
+<p>Properties</p>
+</li>
+</ul>
... 609848 lines suppressed ...