This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/logging-site.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 1914ee28 Automatic Site Publish by Buildbot
1914ee28 is described below

commit 1914ee28b978591787a44a9ce9518b057466e45b
Author: buildbot <[email protected]>
AuthorDate: Tue Mar 19 10:45:13 2024 +0000

    Automatic Site Publish by Buildbot
---
 content/feed.xml                         |   2 +-
 content/xml/ns/index.html                | 112 +++++-
 content/xml/ns/log4j-changelog-0.2.0.xsd |   2 +-
 content/xml/ns/log4j-config-2.23.1.xsd   | 598 +++++++++++++++++++++++++++++++
 content/xml/ns/log4j-config-2.xsd        |   1 +
 5 files changed, 706 insertions(+), 9 deletions(-)

diff --git a/content/feed.xml b/content/feed.xml
index 4a2bf9a5..5846a204 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?><feed 
xmlns="http://www.w3.org/2005/Atom"; ><generator uri="https://jekyllrb.com/"; 
version="4.2.2">Jekyll</generator><link href="/feed.xml" rel="self" 
type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" 
/><updated>2024-03-15T15:22:55+00:00</updated><id>/feed.xml</id><title 
type="html">Apache Software Foundation - Logging 
Services</title><subtitle>Write an awesome description for your new site here. 
You can edit this line in _ [...]
+<?xml version="1.0" encoding="utf-8"?><feed 
xmlns="http://www.w3.org/2005/Atom"; ><generator uri="https://jekyllrb.com/"; 
version="4.2.2">Jekyll</generator><link href="/feed.xml" rel="self" 
type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" 
/><updated>2024-03-19T10:45:12+00:00</updated><id>/feed.xml</id><title 
type="html">Apache Software Foundation - Logging 
Services</title><subtitle>Write an awesome description for your new site here. 
You can edit this line in _ [...]
 
 <p>Today, December 17, 2023 marks a significant milestone for the Apache 
Logging Services project, 
 as we celebrate 20 years since the inception of Log4j 1. 
diff --git a/content/xml/ns/index.html b/content/xml/ns/index.html
index 1c202fa6..672f0229 100644
--- a/content/xml/ns/index.html
+++ b/content/xml/ns/index.html
@@ -160,13 +160,96 @@
 <p>All XML Schemas for Apache Logging Services projects are published at this 
directory.
 The canonical name for this directory is <code><a 
href="https://logging.apache.org/xml/ns"; 
class="bare">https://logging.apache.org/xml/ns</a></code>.</p>
 </div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Important</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>There are two important things to understand about XSD versioning scheme 
used here to employ these schemas in your applications:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p><strong>Schema versions and project versions evolve independently.</strong>
+That is, Log4j <code>2.24.0</code> release does not necessarily mean a new 
<code>log4j-config-2.24.0.xsd</code>: the Log4j 2 runtime configuration API 
might have been kept intact.</p>
+</li>
+<li>
+<p><strong>Users are recommended to use schemas with only major 
versions</strong>; <code>log4j-config-2.xsd</code>, 
<code>log4j-changelog-0.xsd</code>, etc.</p>
+</li>
+</ol>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="log4j2">Log4j 2 schemas</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><a href="/log4j/2.x">Log4j 2</a> is a Java logging framework.
+Following schemas model the Log4j runtime configuration, i.e., 
<code>log4j2.xml</code>.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Publication date</th>
+<th class="tableblock halign-left valign-top">File name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">2024-03-19</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="log4j-config-2.23.1.xsd">log4j-config-2.23.1.xsd</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/2.x/release-notes.html#release-notes-2-23-1">Log4j 
<code>2.23.1</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">N/A</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="log4j-config-2.xsd">log4j-config-2.xsd</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Points to 
the most recent XSD.
+<strong>Users are recommended to refer to this XSD in their XML 
files.</strong></p></td>
+</tr>
+</tbody>
+</table>
+<div class="listingblock">
+<div class="title">Example Log4j 2 schema usage</div>
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;?xml 
version="1.0" encoding="UTF-8"?&gt;
+&lt;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"&gt;
+  &lt;Appenders&gt;
+    &lt;Console name="Console" target="SYSTEM_OUT"&gt;
+      &lt;PatternLayout pattern="%d [%t] %p %c - %m%n"/&gt;
+    &lt;/Console&gt;
+  &lt;/Appenders&gt;
+  &lt;Loggers&gt;
+    &lt;Root level="warn"&gt;
+      &lt;AppenderRef ref="Console"/&gt;
+    &lt;/Root&gt;
+  &lt;/Loggers&gt;
+&lt;/Configuration&gt;</code></pre>
+</div>
+</div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="log4j-changelog"><code>log4j-changelog</code> schemas</h2>
+<h2 id="log4j-changelog">Log4j Changelog schemas</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p><a 
href="https://logging.apache.org/log4j/tools/latest/#log4j-changelog";>log4j-changelog</a>
 is a tool to maintain changelogs.
+<p><a href="/log4j/tools/latest/#log4j-changelog">Log4j Changelog</a> is a 
tool to maintain changelogs.
 It is designed for Apache Log4j, but can be used for any Java project.</p>
 </div>
 <table class="tableblock frame-all grid-all stretch">
@@ -186,22 +269,22 @@ It is designed for Apache Log4j, but can be used for any 
Java project.</p>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">2023-02-03</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="log4j-changelog-0.1.0.xsd">log4j-changelog-0.1.0.xsd</a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/.html#release-notes-0-2-0">Log4j Tools 
<code>0.2.0</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/#release-notes-0-2-0">Log4j Tools 
<code>0.2.0</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">2023-03-17</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="log4j-changelog-0.1.1.xsd">log4j-changelog-0.1.1.xsd</a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/.html#release-notes-0-3-0">Log4j Tools 
<code>0.3.0</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/#release-notes-0-3-0">Log4j Tools 
<code>0.3.0</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">2023-09-28</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="log4j-changelog-0.1.2.xsd">log4j-changelog-0.1.2.xsd</a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/.html#release-notes-0-5-0">Log4j Tools 
<code>0.5.0</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/#release-notes-0-5-0">Log4j Tools 
<code>0.5.0</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">2023-12-13</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="log4j-changelog-0.1.3.xsd">log4j-changelog-0.1.3.xsd</a></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/.html#release-notes-0-7-0">Log4j Tools 
<code>0.7.0</code></a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Released 
with <a href="/log4j/tools/latest/#release-notes-0-7-0">Log4j Tools 
<code>0.7.0</code></a></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">2024-03-15</p></td>
@@ -212,10 +295,25 @@ It is designed for Apache Log4j, but can be used for any 
Java project.</p>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">N/A</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="log4j-changelog-0.xsd">log4j-changelog-0.xsd</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Points to 
the most recent XSD of major version <code>0</code>.
-Users are recommended to refer to this XSD in their XML files.</p></td>
+<strong>Users are recommended to refer to this XSD in their XML 
files.</strong></p></td>
 </tr>
 </tbody>
 </table>
+<div class="listingblock">
+<div class="title">Example Log4j Changelog schema usage</div>
+<div class="content">
+<pre class="highlight"><code class="language-xml" data-lang="xml">&lt;?xml 
version="1.0" encoding="UTF-8"?&gt;
+&lt;entry 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-changelog-0.xsd";
+       type="updated"&gt;
+  &lt;issue id="2370" 
link="https://github.com/apache/logging-log4j2/pull/2370"/&gt;
+  &lt;description format="asciidoc"&gt;Update `actions/checkout` to version 
`4.1.2`&lt;/description&gt;
+&lt;/entry&gt;</code></pre>
+</div>
+</div>
 </div>
 </div>
     </div>    
diff --git a/content/xml/ns/log4j-changelog-0.2.0.xsd 
b/content/xml/ns/log4j-changelog-0.2.0.xsd
index 5539b11e..5baeb73f 100644
--- a/content/xml/ns/log4j-changelog-0.2.0.xsd
+++ b/content/xml/ns/log4j-changelog-0.2.0.xsd
@@ -19,7 +19,7 @@
         targetNamespace="https://logging.apache.org/xml/ns";
         xmlns:cl="https://logging.apache.org/xml/ns";
         elementFormDefault="qualified"
-        version="1.0.0">
+        version="0.2.0">
 
   <element name="release">
     <complexType>
diff --git a/content/xml/ns/log4j-config-2.23.1.xsd 
b/content/xml/ns/log4j-config-2.23.1.xsd
new file mode 100644
index 00000000..2f5ca312
--- /dev/null
+++ b/content/xml/ns/log4j-config-2.23.1.xsd
@@ -0,0 +1,598 @@
+<?xml version="1.0" encoding="UTF-8"?><schema 
xmlns="http://www.w3.org/2001/XMLSchema"; 
xmlns:log4j="https://logging.apache.org/xml/ns"; elementFormDefault="qualified" 
targetNamespace="https://logging.apache.org/xml/ns"; version="2.23.1"><element 
type="log4j:org.apache.logging.log4j.core.config.Configuration" 
name="Configuration"/><simpleType 
name="com.conversantmedia.util.concurrent.SpinPolicy"><restriction 
base="string"><enumeration value="WAITING"></enumeration><enumeration 
value="BLOCKI [...]
+NOTE: The Log4j API supports custom levels, the following list contains only 
the standard ones.</documentation></annotation><restriction 
base="string"><enumeration value="OFF"><annotation><documentation>Special level 
that disables logging.
+No events should be logged at this 
level.</documentation></annotation></enumeration><enumeration 
value="FATAL"><annotation><documentation>A fatal event that will prevent the 
application from 
continuing</documentation></annotation></enumeration><enumeration 
value="ERROR"><annotation><documentation>An error in the application, possibly 
recoverable</documentation></annotation></enumeration><enumeration 
value="WARN"><annotation><documentation>An event that might possible lead to an 
error</do [...]
+
+Addresses without a port (or port set to 0) will use the default Cassandra 
port (9042).</documentation></annotation></element></sequence><attribute 
name="batchType" 
type="log4j:com.datastax.driver.core.BatchStatement.Type"><annotation><documentation>If
 batch statements are enabled, use this type of batch 
statement.</documentation></annotation></attribute><attribute name="batched" 
type="boolean"><annotation><documentation>Whether or not to use batch 
statements when inserting records.</doc [...]
+
+Can be used with or without batch 
statements.</documentation></annotation></attribute><attribute 
name="clusterName" type="string"></attribute><attribute name="ignoreExceptions" 
type="boolean"></attribute><attribute name="keyspace" 
type="string"></attribute><attribute name="name" 
type="string"></attribute><attribute name="password" 
type="string"></attribute><attribute name="table" 
type="string"></attribute><attribute name="useClockForTimestampGenerator" 
type="boolean"><annotation><documen [...]
+
+Wraps a 
apiref:org.apache.logging.log4j.core.LifeCycle.State[].</documentation></annotation><choice><element
 name="Cassandra" 
type="log4j:org.apache.logging.log4j.cassandra.CassandraAppender"/><element 
name="Async" 
type="log4j:org.apache.logging.log4j.core.appender.AsyncAppender"/><element 
name="Console" 
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender"/><element 
name="CountingNoOp" 
type="log4j:org.apache.logging.log4j.core.appender.CountingNoOpAppender"/><element
 name= [...]
+
+An Appender can contain a apiref:org.apache.logging.log4j.core.Layout[] if 
applicable as well as an apiref:org.apache.logging.log4j.core.ErrorHandler[]. 
Typical Appender implementations coordinate with an implementation of 
apiref:org.apache.logging.log4j.core.appender.AbstractManager[] to handle 
external resources such as streams, connections, and other shared state.
+As Appenders are plugins, concrete implementations need to be annotated with 
apiref:org.apache.logging.log4j.core.config.plugins.Plugin[] and need to 
provide a static factory method annotated with 
apiref:org.apache.logging.log4j.core.config.plugins.PluginFactory[].
+
+Most core plugins are written using a related Manager class that handle the 
actual task of serializing a apiref:org.apache.logging.log4j.core.LogEvent[] to 
some output location.
+For instance, many Appenders can take advantage of the 
apiref:org.apache.logging.log4j.core.appender.OutputStreamManager[] class.
+
+It is recommended that Appenders don't do any heavy lifting since there can be 
many instances of the class being used at any given time.
+When resources require locking (e.g., through 
apiref:org.apache.logging.log4j.core.java.nio.channels.FileLock[]), it is 
important to isolate synchronized code to prevent concurrency 
issues.</documentation></annotation><choice><element name="Cassandra" 
type="log4j:org.apache.logging.log4j.cassandra.CassandraAppender"/><element 
name="Async" 
type="log4j:org.apache.logging.log4j.core.appender.AsyncAppender"/><element 
name="Console" type="log4j:org.apache.logging.log4j.core.appender.ConsoleAp 
[...]
+
+It is highly recommended that applications make use of the Filters provided 
with this implementation before creating their own.
+
+This interface supports "global" filters (i.e. - all events must pass through 
them first), attached to specific loggers and associated with Appenders.
+It is recommended that, where possible, Filter implementations create a 
generic filtering method that can be called from any of the filter 
methods.</documentation></annotation><choice><element name="BurstFilter" 
type="log4j:org.apache.logging.log4j.core.filter.BurstFilter"/><element 
name="filters" 
type="log4j:org.apache.logging.log4j.core.filter.CompositeFilter"/><element 
name="DenyAllFilter" 
type="log4j:org.apache.logging.log4j.core.filter.DenyAllFilter"/><element 
name="DynamicThreshold [...]
+
+The formats are:
+
+* `byte[]`
+* an implementer of apiref:java.io.Serializable[], like `byte[]`
+* apiref:java.lang.String[]
+* apiref:org.apache.logging.log4j.core.LogEvent[]
+
+Since 2.6, Layouts can 
apiref:org.apache.logging.log4j.core.layout.Encoder#encode(Object,ByteBufferDestination)[encode]
 a `LogEvent` directly to a 
apiref:org.apache.logging.log4j.core.layout.ByteBufferDestination[] without 
creating temporary intermediary 
objects.</documentation></annotation><choice><element name="CsvLogEventLayout" 
type="log4j:org.apache.logging.log4j.core.layout.CsvLogEventLayout"/><element 
name="CsvParameterLayout" 
type="log4j:org.apache.logging.log4j.core.layout.CsvPa [...]
+
+In Log4j, the main interface for handling the life cycle context of an object 
is this one.
+An object first starts in the 
apiref:org.apache.logging.log4j.core.State#INITIALIZED[] state by default to 
indicate the class has been loaded.
+From here, calling the 
apiref:org.apache.logging.log4j.core.LifeCycle#start()[] method will change 
this state to apiref:org.apache.logging.log4j.core.State#STARTING[]. After 
successfully being started, this state is changed to 
apiref:org.apache.logging.log4j.core.State#STARTED[]. When the 
apiref:org.apache.logging.log4j.core.LifeCycle#stop()[] is called, this goes 
into the apiref:org.apache.logging.log4j.core.State#STOPPING[] state.
+After successfully being stopped, this goes into the 
apiref:org.apache.logging.log4j.core.State#STOPPED[] state.
+In most circumstances, implementation classes should store their 
apiref:org.apache.logging.log4j.core.State[] in a `volatile` field or inside an 
apiref:org.apache.logging.log4j.core.java.util.concurrent.atomic.AtomicReference[]
 dependent on synchronization and concurrency 
requirements.</documentation></annotation><choice><element name="Cassandra" 
type="log4j:org.apache.logging.log4j.cassandra.CassandraAppender"/><element 
name="Async" type="log4j:org.apache.logging.log4j.core.appender.Asy [...]
+
+This interface should be merged with the super-interface in 
3.0.</documentation></annotation><choice><element name="Cassandra" 
type="log4j:org.apache.logging.log4j.cassandra.CassandraAppender"/><element 
name="Async" 
type="log4j:org.apache.logging.log4j.core.appender.AsyncAppender"/><element 
name="Console" 
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender"/><element 
name="CountingNoOp" 
type="log4j:org.apache.logging.log4j.core.appender.CountingNoOpAppender"/><element
 name [...]
+
+Although Appenders do not have to extend this class, doing so will simplify 
their implementation.</documentation></annotation><choice><element 
name="Cassandra" 
type="log4j:org.apache.logging.log4j.cassandra.CassandraAppender"/><element 
name="Async" 
type="log4j:org.apache.logging.log4j.core.appender.AsyncAppender"/><element 
name="Console" 
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender"/><element 
name="CountingNoOp" type="log4j:org.apache.logging.log4j.core.appender.Cou [...]
+
+The stream encoding is defined in the 
layout.</documentation></annotation><choice><element name="Console" 
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender"/><element 
name="File" 
type="log4j:org.apache.logging.log4j.core.appender.FileAppender"/><element 
name="MemoryMappedFile" 
type="log4j:org.apache.logging.log4j.core.appender.MemoryMappedFileAppender"/><element
 name="OutputStream" 
type="log4j:org.apache.logging.log4j.core.appender.OutputStreamAppender"/><element
 name="R [...]
+
+You can configure an AsyncAppender with one or more Appenders and an Appender 
to append to if the queue is full.
+The AsyncAppender does not allow a filter to be specified on the Appender 
references.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.async.BlockingQueueFactory" 
minOccurs="0"></group><element name="AppenderRef" 
type="log4j:org.apache.logging.log4j.core.config.AppenderRef" 
maxOccurs="unbounded"></element><element name="property" 
type="log4j:org.apache.logging.log4j.core.con [...]
+
+The default target is `System. out`.
+
+TODO Accessing `System. out` or `System. err` as a byte stream instead of a 
writer bypasses the JVM's knowledge of the proper encoding.
+(RG) Encoding is handled within the Layout.
+Typically, a Layout will generate a String and then call getBytes which may 
use a configured encoding or the system default.
+OTOH, a Writer cannot print byte 
streams.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><element 
name="property" type="log4j:org.apache.logging.log4j.core.config.Property" 
minOccurs="0" maxOccurs="unbounded"></element></sequence><attribute 
name="bufferSize" type="int"></attribute><attribute name="bufferedIo" 
type="boolean"></attribute><attrib [...]
+
+Hopefully it is obvious that the Appenders must be configured to not suppress 
exceptions for the FailoverAppender to 
work.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" 
minOccurs="0"><annotation><documentation>A Filter 
(optional).</documentation></annotation></group></sequence><attribute 
name="ignoreExceptions" type="string"><annotation><documentation>If `"true"` 
(default) exceptions encountered when appending events are logged; otherwise t 
[...]
+
+Use for compatibility with version 1.2 and handy for composing a 
apiref:org.apache.logging.log4j.core.appender.ScriptAppenderSelector[].</documentation></annotation><attribute
 name="name" type="string"></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.appender.OutputStreamAppender"><annotation><documentation>Appends
 log events to a given output stream using a layout.
+
+Character encoding is handled within the 
Layout.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><element 
name="property" type="log4j:org.apache.logging.log4j.core.config.Property" 
minOccurs="0" maxOccurs="unbounded"></element></sequence><attribute 
name="bufferSize" type="int"></attribute><attribute name="bufferedIo" 
type="boolean"></attribute> [...]
+
+The number of logging events delivered in this e-mail depend on the value of 
*BufferSize* option.
+The `SmtpAppender` keeps only the last `BufferSize` logging events in its 
cyclic buffer.
+This keeps memory requirements at a reasonable level while still delivering 
useful application context.
+By default, an email message will formatted as HTML.
+This can be modified by setting a layout for the appender.
+By default, an email message will be sent when an ERROR or higher severity 
message is appended.
+This can be modified by setting a filter for the 
appender.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" 
minOccurs="0"><annotation><documentation>Specifies the filter used for this 
appender.
+
+By default, uses a 
apiref:org.apache.logging.log4j.core.filter.ThresholdFilter[] with a level of 
ERROR.</documentation></annotation></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" 
minOccurs="0"><annotation><documentation>Specifies the layout used for the 
email message body.
+
+By default, this uses the 
apiref:org.apache.logging.log4j.core.layout.HtmlLayout#createDefaultLayout()[default
 HTML layout].</documentation></annotation></group><element name="property" 
type="log4j:org.apache.logging.log4j.core.config.Property" minOccurs="0" 
maxOccurs="unbounded"></element><element name="Ssl" 
type="log4j:org.apache.logging.log4j.core.net.ssl.SslConfiguration" 
minOccurs="0"><annotation><documentation>Specifies an SSL configuration for 
smtps connections.</documentation></a [...]
+
+Defaults to .</documentation></annotation></attribute><attribute name="cc" 
type="string"><annotation><documentation>Comma-separated list of CC email 
addresses.</documentation></annotation></attribute><attribute name="from" 
type="string"><annotation><documentation>Email address of the 
sender.</documentation></annotation></attribute><attribute 
name="ignoreExceptions" type="boolean"></attribute><attribute name="name" 
type="string"></attribute><attribute name="replyTo" type="string"><annotat [...]
+
+Disabled by default.</documentation></annotation></attribute><attribute 
name="smtpHost" type="string"><annotation><documentation>Host name of SMTP 
server to send messages 
through.</documentation></annotation></attribute><attribute name="smtpPassword" 
type="string"><annotation><documentation>Password to authenticate with SMTP 
server.</documentation></annotation></attribute><attribute name="smtpPort" 
type="int"><annotation><documentation>Port number of SMTP server to send 
messages through. [...]
+
+Defaults to "smtp".</documentation></annotation></attribute><attribute 
name="smtpUsername" type="string"><annotation><documentation>Username to 
authenticate with SMTP 
server.</documentation></annotation></attribute><attribute name="subject" 
type="string"><annotation><documentation>Subject template for the email 
messages.</documentation></annotation></attribute><attribute name="to" 
type="string"><annotation><documentation>Comma-separated list of recipient 
email addresses.</documentation>< [...]
+
+Supports both TCP and UDP.</documentation></annotation><choice><element 
name="Syslog" 
type="log4j:org.apache.logging.log4j.core.appender.SyslogAppender"/></choice></group><complexType
 
name="org.apache.logging.log4j.core.appender.SyslogAppender"><annotation><documentation>The
 Syslog Appender.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><elem 
[...]
+
+All database appenders should inherit from this base 
appender.</documentation></annotation><choice><element name="Cassandra" 
type="log4j:org.apache.logging.log4j.cassandra.CassandraAppender"/><element 
name="JDBC" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender"/><element
 name="JPA" 
type="log4j:org.apache.logging.log4j.core.appender.db.jpa.JpaAppender"/><element
 name="NoSql" 
type="log4j:org.apache.logging.log4j.core.appender.nosql.NoSqlAppender"/></choice></group><
 [...]
+
+Not applicable if 
apiref:org.apache.logging.log4j.core.appender.db.ColumnMapping#setType(Class)[] 
is a apiref:org.apache.logging.log4j.util.ReadOnlyStringMap[], 
apiref:org.apache.logging.log4j.spi.ThreadContextMap[], or 
apiref:org.apache.logging.log4j.spi.ThreadContextStack[].</documentation></annotation></group></sequence><attribute
 name="literal" type="string"><annotation><documentation>Literal value to use 
for populating a column.
+
+This is generally useful for functions, stored procedures, etc.
+No escaping will be done on this 
value.</documentation></annotation></attribute><attribute name="name" 
type="string"><annotation><documentation>Column 
name.</documentation></annotation></attribute><attribute name="parameter" 
type="string"><annotation><documentation>Parameter value to use for populating 
a column, MUST contain a single parameter marker '?'.
+
+This is generally useful for functions, stored procedures, etc.
+No escaping will be done on this 
value.</documentation></annotation></attribute><attribute name="pattern" 
type="string"><annotation><documentation>Pattern to use as a 
apiref:org.apache.logging.log4j.core.layout.PatternLayout[].
+
+Convenient shorthand for 
apiref:org.apache.logging.log4j.core.appender.db.ColumnMapping#setLayout(StringLayout)[]
 with a PatternLayout.</documentation></annotation></attribute><attribute 
name="source" type="string"><annotation><documentation>Source name.
+
+Useful when combined with a 
apiref:org.apache.logging.log4j.core.appender.db.org.apache.logging.log4j.message.MapMessage[]
 depending on the 
appender.</documentation></annotation></attribute></complexType><group 
name="org.apache.logging.log4j.core.appender.db.jdbc.AbstractConnectionSource"><choice><element
 name="DataSource" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.DataSourceConnectionSource"/><element
 name="DriverManager" type="log4j:org.apache.logging.log4j.core.appende [...]
+
+This plugin does not provide any connection pooling unless it is available 
through the connection string and driver itself.
+This handy to get you off the ground without having to deal with 
JNDI.</documentation></annotation><choice><element name="DriverManager" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.DriverManagerConnectionSource"/><element
 name="PoolingDriver" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.PoolingDriverConnectionSource"/></choice></group><complexType
 
name="org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfig"><annotation><documentation>A
 configuration ele [...]
+
+Mutually exclusive with `pattern! =null` and 
`eventTimestamp=true`.</documentation></annotation></attribute><attribute 
name="name" type="string"><annotation><documentation>The name of the database 
column as it exists within the database 
table.</documentation></annotation></attribute><attribute name="pattern" 
type="string"><annotation><documentation>The 
apiref:org.apache.logging.log4j.core.layout.PatternLayout[] pattern to insert 
in this column.
+
+Mutually exclusive with `literal! =null` and 
`eventTimestamp=true`</documentation></annotation></attribute></complexType><group
 
name="org.apache.logging.log4j.core.appender.db.jdbc.ConnectionSource"><annotation><documentation>Configuration
 element for 
apiref:org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender[].
+
+If you want to use the 
apiref:org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender[] but none 
of the provided connection sources meet your needs, you can simply create your 
own connection source.</documentation></annotation><choice><element 
name="DataSource" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.DataSourceConnectionSource"/><element
 name="DriverManager" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.DriverManagerConnectionSource"/><element
 name="Co [...]
+Must start with java:/comp/env or 
environment-equivalent.</documentation></annotation></attribute></complexType><complexType
 
name="org.apache.logging.log4j.core.appender.db.jdbc.DriverManagerConnectionSource"><annotation><documentation>A
 apiref:org.apache.logging.log4j.core.appender.db.jdbc.ConnectionSource[] that 
uses a JDBC connection string, a user name, and a password to call 
apiref:java.sql.DriverManager#getConnection(String,String,String)[].
+
+This plugin does not provide any connection pooling unless it is available 
through the connection string and driver itself.
+This handy to get you off the ground without having to deal with 
JNDI.</documentation></annotation><sequence><element name="property" 
type="log4j:org.apache.logging.log4j.core.config.Property" minOccurs="0" 
maxOccurs="unbounded"></element></sequence><attribute name="connectionString" 
type="string"></attribute><attribute name="driverClassName" 
type="string"></attribute><attribute name="password" 
type="string"></attribute><attribute name="userName" 
type="string"></attribute></complexType>< [...]
+If this method returns a apiref:java.sql.Connection[], it should return a new 
connection every 
call.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender"><annotation><documentation>This
 Appender writes logging events to a relational database using standard JDBC 
mechanisms.
+
+It takes a list of 
apiref:org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfig[]s and/or 
apiref:org.apache.logging.log4j.core.appender.db.ColumnMapping[]s with which it 
determines how to save the event data into the appropriate columns in the table.
+ColumnMapping is new as of Log4j 2.8 and supports 
apiref:org.apache.logging.log4j.core.config.plugins.convert.TypeConverter[type 
conversion] and persistence using 
apiref:java.sql.PreparedStatement#setObject(int,Object)[]. A 
apiref:org.apache.logging.log4j.core.appender.db.jdbc.ConnectionSource[] plugin 
instance instructs the appender (and 
apiref:org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager[]) 
how to connect to the database.
+This appender can be reconfigured at run 
time.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><element 
name="ColumnMapping" 
type="log4j:org.apache.logging.log4j.core.appender.db.ColumnMapping" 
minOccurs="0" maxOccurs="unbounded"></element><element name="Column" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.ColumnConfig" 
minOccurs= [...]
+
+The connections are served from an Apache Commons DBCP pooling 
driver.</documentation></annotation><sequence><element 
name="PoolableConnectionFactory" 
type="log4j:org.apache.logging.log4j.core.appender.db.jdbc.PoolableConnectionFactoryConfig"
 minOccurs="0"></element><element name="property" 
type="log4j:org.apache.logging.log4j.core.config.Property" minOccurs="0" 
maxOccurs="unbounded"></element></sequence><attribute name="connectionString" 
type="string"></attribute><attribute name="driver [...]
+
+It requires a pre-configured JPA persistence unit and a concrete 
implementation of the abstract 
apiref:org.apache.logging.log4j.core.appender.db.jpa.AbstractLogEventWrapperEntity[]
 class decorated with JPA 
annotations.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" 
minOccurs="0"><annotation><documentation>The filter, if any, to 
use.</documentation></annotation></group></sequence><attribute 
name="bufferSize" type="string"><annotation><documen [...]
+
+This Appender replaces the previous split ones.
+However, configurations set up for the 2.0 version of the JMS appenders will 
still work.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><element 
name="property" type="log4j:org.apache.logging.log4j.core.config.Property" 
minOccurs="0" maxOccurs="unbounded"></element></sequence><attribute 
name="destinationBindingName" type="string"></attribute>< [...]
+
+Requires the JeroMQ jar (LGPL as of 
0.3.5)</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><element 
name="property" type="log4j:org.apache.logging.log4j.core.config.Property" 
minOccurs="0" maxOccurs="unbounded"></element></sequence><attribute 
name="affinity" type="long"></attribute><attribute name="backlog" 
type="long"></attribute><attribute na [...]
+
+It requires implementations of 
apiref:org.apache.logging.log4j.core.appender.nosql.NoSqlObject[], 
apiref:org.apache.logging.log4j.core.appender.nosql.NoSqlConnection[], and 
apiref:org.apache.logging.log4j.core.appender.nosql.NoSqlProvider[] to "know" 
how to write events to the chosen NoSQL database.
+
+For examples on how to write your own NoSQL provider, see the simple source 
code for the MongoDB and CouchDB 
providers.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.appender.nosql.NoSqlProvider" 
minOccurs="0"><annotation><documentation>Sets the 
provider.</documentation></annotation></group><ele [...]
+
+The DefaultRolloverStrategy is a combination of a time-based policy and a 
fixed-window policy.
+When the file name pattern contains a date format then the rollover time 
interval will be used to calculate the time to use in the file pattern.
+When the file pattern contains an integer replacement token one of the 
counting techniques will be used.
+
+When the ascending attribute is set to true (the default) then the counter 
will be incremented and the current log file will be renamed to include the 
counter value.
+If the counter hits the maximum value then the oldest file, which will have 
the smallest counter, will be deleted, all other files will be renamed to have 
their counter decremented and then the current file will be renamed to have the 
maximum counter value.
+Note that with this counting strategy specifying a large maximum value may 
entirely avoid renaming files.
+
+When the ascending attribute is false, then the "normal" fixed-window strategy 
will be used.
+
+Let _max_ and _min_ represent the values of respectively the *MaxIndex* and 
*MinIndex* options.
+Let "foo.
+log" be the value of the *ActiveFile* option and "foo.
+%i.log" the value of *FileNamePattern*. Then, when rolling over, the file 
`foo. _max_.log` will be deleted, the file `foo. _max-1_.log` will be renamed 
as `foo. _max_.log`, the file `foo. _max-2_.log` renamed as `foo. _max-1_.log`, 
and so on, the file `foo. _min+1_.log` renamed as `foo. _min+2_.log`. Lastly, 
the active file `foo. log` will be renamed as `foo. _min_.log` and a new active 
file name `foo. log` will be created.
+
+Given that this rollover algorithm requires as many file renaming operations 
as the window size, large window sizes are 
discouraged.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.Action" 
minOccurs="0" maxOccurs="unbounded"></group></sequence><attribute 
name="compressionLevel" type="string"></attribute><attribute name="fileIndex" 
type="string"></attribute><attribute name="max" 
type="string"></attribute><attribute name="min" t [...]
+
+Files will be renamed files according to an algorithm as described below.
+
+The DirectWriteRolloverStrategy uses similar logic as DefaultRolloverStrategy 
to determine the file name based on the file pattern, however the 
DirectWriteRolloverStrategy writes directly to a file and does not rename it 
during rollover, except if it is compressed, in which case it will add the 
appropriate file extension.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.Action" 
minOccurs="0" maxOccurs="unbounded"></group></sequ [...]
+
+Such conditions include time of day, file size, an external event, the log 
request or a combination thereof.</documentation></annotation><choice><element 
name="Policies" 
type="log4j:org.apache.logging.log4j.core.appender.rolling.CompositeTriggeringPolicy"/><element
 name="CronTriggeringPolicy" 
type="log4j:org.apache.logging.log4j.core.appender.rolling.CronTriggeringPolicy"/><element
 name="NoOpTriggeringPolicy" 
type="log4j:org.apache.logging.log4j.core.appender.rolling.NoOpTriggeringPolicy 
[...]
+Default is false.</documentation></annotation></attribute><attribute 
name="maxDepth" type="int"><annotation><documentation>The maxDepth parameter is 
the maximum number of levels of directories to visit.
+A value of 0 means that only the starting file is visited, unless denied by 
the security manager.
+A value of MAX_VALUE may be used to indicate that all levels should be 
visited.</documentation></annotation></attribute><attribute name="testMode" 
type="boolean"><annotation><documentation>if true, files are not deleted but 
instead a message is printed to the status logger at INFO level.
+Users can use this to do a dry run to test if their configuration works as 
expected.
+Default is 
false.</documentation></annotation></attribute></complexType><simpleType 
name="org.apache.logging.log4j.core.appender.rolling.action.Duration"><annotation><documentation>Simplified
 implementation of the ISO-8601 Durations standard.
+
+The supported format is `PnDTnHnMnS`, with 'P' and 'T' optional.
+Days are considered to be exactly 24 hours.
+
+Similarly to the `java. time. Duration` class, this class does not support 
year or month sections in the format.
+This implementation does not support fractions or negative 
values.</documentation></annotation><restriction 
base="string"></restriction></simpleType><complexType 
name="org.apache.logging.log4j.core.appender.rolling.action.IfAccumulatedFileCount"><annotation><documentation>PathCondition
 that accepts paths after some count threshold is exceeded during the file tree 
walk.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.PathCondit 
[...]
+
+Corresponds to logical "AND".</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.PathCondition" 
maxOccurs="unbounded"><annotation><documentation>The component 
filters.</documentation></annotation></group></sequence></complexType><complexType
 
name="org.apache.logging.log4j.core.appender.rolling.action.IfAny"><annotation><documentation>Composite
 `PathCondition` that accepts objects that are accepted by _any_ component 
conditions.
+
+Corresponds to logical "OR".</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.PathCondition" 
maxOccurs="unbounded"><annotation><documentation>The component 
conditions.</documentation></annotation></group></sequence></complexType><complexType
 
name="org.apache.logging.log4j.core.appender.rolling.action.IfFileName"><annotation><documentation>PathCondition
 that accepts files for deletion if their relative path matches either a glob 
[...]
+
+If both a regular expression and a glob pattern are specified the glob pattern 
is used and the regular expression is ignored.
+
+The regular expression is a pattern as defined by the 
apiref:java.util.regex.Pattern[] class.
+A glob is a simplified pattern expression described in 
apiref:java.nio.file.FileSystem#getPathMatcher(String)[].</documentation></annotation><sequence><group
 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.PathCondition" 
minOccurs="0" maxOccurs="unbounded"><annotation><documentation>nested 
conditions to evaluate if this condition accepts a 
path</documentation></annotation></group></sequence><attribute name="glob" 
type="string"><annotation><documentation>the baseDir-relat [...]
+Must be a valid 
Duration.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.appender.rolling.action.IfNot"><annotation><documentation>Wrapper
 `PathCondition` that accepts objects that are rejected by the wrapped 
component filter.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.PathCondition"><annotation><documentation>The
 condition to negate.</documentation></annotation></gr [...]
+
+Allow to define file permissions, user and group for log files on POSIX 
supported OS.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.appender.rolling.action.PathCondition" 
minOccurs="0" maxOccurs="unbounded"></group></sequence><attribute 
name="basePath" type="string"></attribute><attribute name="fileGroup" 
type="string"></attribute><attribute name="fileOwner" 
type="string"></attribute><attribute name="filePermissions" 
type="string"></attribute><attr [...]
+
+The specified script may be a 
apiref:org.apache.logging.log4j.core.appender.rolling.action.org.apache.logging.log4j.core.script.Script[],
 a apiref:org.apache.logging.log4j.core.script.ScriptFile[] or a 
apiref:org.apache.logging.log4j.core.script.ScriptRef[].</documentation></annotation><sequence><group
 ref="log4j:org.apache.logging.log4j.core.script.AbstractScript" 
minOccurs="0"><annotation><documentation>The script to run.
+This may be a 
apiref:org.apache.logging.log4j.core.appender.rolling.action.org.apache.logging.log4j.core.script.Script[],
 a apiref:org.apache.logging.log4j.core.script.ScriptFile[] or a 
apiref:org.apache.logging.log4j.core.script.ScriptRef[]. The script must return 
a `List&lt;PathWithAttributes&gt;`. When the script is executed, it is provided 
the following bindings:
+
+* basePath - the directory from where the 
apiref:org.apache.logging.log4j.core.appender.rolling.action.DeleteAction[Delete]
 action started scanning for files to delete.
+Can be used to relativize the paths in the pathList.
+* pathList - a `java. util. List` containing 
apiref:org.apache.logging.log4j.core.appender.rolling.action.PathWithAttributes[]
 objects.
+(The script is free to modify and return this list.
+)
+* substitutor - a 
apiref:org.apache.logging.log4j.core.appender.rolling.action.org.apache.logging.log4j.core.lookup.StrSubstitutor[]
 that can be used to look up variables embedded in the base dir or other 
properties
+* statusLogger - the apiref:org.apache.logging.log4j.status.StatusLogger[] 
that can be used to log events during script execution
+* any properties declared in the 
configuration</documentation></annotation></group></sequence></complexType><complexType
 
name="org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy"><annotation><documentation>Policy
 is purging appenders that were not in use specified time in 
minutes</documentation></annotation><attribute name="checkInterval" 
type="string"><annotation><documentation>when all appenders purged, the number 
of increments of timeUnit to check if any appenders appeared [...]
+
+Routing is achieved by specifying a pattern on the Routing appender 
declaration.
+The pattern should contain one or more substitution patterns of the form 
"$${[key:]token}". The pattern will be resolved each time the Appender is 
called using the built in StrSubstitutor and the StrLookup plugin that matches 
the specified key.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.Layout" minOccurs="0"></group><group 
ref="log4j:org.apache.logging.log4j.core.appen [...]
+
+AsyncLoggerConfig is a logger designed for high throughput and low latency 
logging.
+It does not perform any I/O in the calling (application) thread, but instead 
hands off the work to another thread as soon as possible.
+The actual logging is performed in the background thread.
+It uses LMAX Disruptor for inter-thread communication.
+
+To use AsyncLoggerConfig, specify `&lt;asyncLogger&gt;` or `&lt;asyncRoot&gt;` 
in configuration.
+
+Note that for performance reasons, this logger does not include source 
location by default.
+You need to specify `includeLocation="true"` in the configuration or any 
%class, %location or %line conversion patterns in your log4j.
+xml configuration will produce either a "?" character or no output at all.
+
+For best performance, use AsyncLoggerConfig with the RandomAccessFileAppender 
or RollingRandomAccessFileAppender, with immediateFlush=false.
+These appenders have built-in support for the batching mechanism used by the 
Disruptor library, and they will flush to disk at the end of each batch.
+This means that even with immediateFlush=false, there will never be any items 
left in the buffer; all log events will all be written to disk in a very 
efficient manner.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0"></group><element 
name="AppenderRef" 
type="log4j:org.apache.logging.log4j.core.config.AppenderRef" minOccurs="0" 
maxOccurs="unbounded"></element><element name="property" 
type="log4j:org.apache.logging.log4j.core.conf [...]
+The possible values are:
+
+* `out` for using standard out (default)
+* `err` for using standard error
+* a string that is interpreted in order as URI, URL or the path to a local file
+
+If the provided value is invalid, then the default destination of standard out 
will be used.</documentation></annotation></attribute><attribute name="name" 
type="string"><annotation><documentation>Name of the 
configuration</documentation></annotation></attribute><attribute 
name="monitorInterval" type="int"><annotation><documentation>Number of seconds 
between polls for configuration 
changes</documentation></annotation></attribute><attribute name="schema" 
type="string"><annotation><documen [...]
+Possible values are `enable` and `disable`.
+The shutdown hook is enabled by default, unless Log4j detects the presence of 
the Servlet API.</documentation></annotation></attribute><attribute 
name="shutdownTimeout" type="int"><annotation><documentation>Timeout in 
milliseconds of the logger context shut 
down</documentation></annotation></attribute><attribute name="status" 
type="log4j:org.apache.logging.log4j.Level"><annotation><documentation>Sets the 
level of the status logger</documentation></annotation></attribute><attribute 
name=" [...]
+
+ConfigurationFactory allows the configuration implementation to be dynamically 
chosen in 1 of 3 ways:
+
+. A system property named "log4j.
+configurationFactory" can be set with the name of the ConfigurationFactory to 
be used.
+. 
apiref:org.apache.logging.log4j.core.config.ConfigurationFactory#setConfigurationFactory(ConfigurationFactory)[]
 can be called with the instance of the ConfigurationFactory to be used.
+This must be called before any other calls to Log4j.
+. A ConfigurationFactory implementation can be added to the classpath and 
configured as a plugin in the 
apiref:org.apache.logging.log4j.core.config.ConfigurationFactory#CATEGORY[ConfigurationFactory]
 category.
+The apiref:org.apache.logging.log4j.core.config.Order[] annotation should be 
used to configure the factory to be the first one inspected.
+See apiref:org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory[] 
for an example.
+
+If the ConfigurationFactory that was added returns null on a call to 
getConfiguration then any other ConfigurationFactories found as plugins will be 
called in their respective order.
+DefaultConfiguration is always called last if no configuration has been 
returned.</documentation></annotation><choice><element 
name="JsonConfigurationFactory" 
type="log4j:org.apache.logging.log4j.core.config.json.JsonConfigurationFactory"/><element
 name="PropertiesConfigurationFactory" 
type="log4j:org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory"/><element
 name="XmlConfigurationFactory" 
type="log4j:org.apache.logging.log4j.core.config.xml.XmlConfigurationFac [...]
+
+The supported formats are:
+
+* 0x0123456789ABCDEF
+* Base64:ABase64String
+* String using apiref:java.nio.charset.Charset#defaultCharset()[] [TODO Should 
this be UTF-8 instead?
+]</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ByteConverter"><annotation><documentation>Converts
 a apiref:java.lang.String[] into a 
apiref:java.lang.Byte[].</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CharArrayConverter"><annotation><documentation>Converts
 a apiref:java.lang.String[] into a `char[]`.</documentation></ann [...]
+
+Returns `null` for invalid level 
names.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.LongConverter"><annotation><documentation>Converts
 a apiref:java.lang.String[] into a 
apiref:java.lang.Long[].</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.PathConverter"><annotation><documentation>Converts
 a apiref:java.lang.String[] into [...]
+
+Filters can be either context wide or attached to an appender.
+A filter may choose to support being called only from the context or only from 
an appender in which case it will only implement the required method(s). The 
rest will default to return 
apiref:org.apache.logging.log4j.core.filter.org.apache.logging.log4j.core.Filter.Result#NEUTRAL[].
+
+Garbage-free note: the methods with unrolled varargs by default delegate to 
the apiref:org.apache.logging.log4j.core.filter.AbstractFilter#filter(Logger, 
Level, Marker, String, Object...)[filter method with vararg parameters]. 
Subclasses that want to be garbage-free should override these methods to 
implement the appropriate filtering without creating a vararg 
array.</documentation></annotation><choice><element name="BurstFilter" 
type="log4j:org.apache.logging.log4j.core.filter.BurstFilte [...]
+
+Use this filter when you want to control the maximum burst of log statements 
that can be sent to an appender.
+The filter is configured in the log4j configuration file.
+For example, the following configuration limits the number of INFO level (as 
well as DEBUG and TRACE) log statements that can be sent to the console to a 
burst of 100 with an average rate of 16 per second.
+WARN, ERROR and FATAL messages would continue to be delivered.
+`&lt;Console name="console"&gt; &lt;PatternLayout pattern="%-5p %d{dd-MMM-yyyy 
HH:mm:ss} %x %t %m%n"/&gt; &lt;Filters&gt; &lt;BurstFilter level="INFO" 
rate="16" maxBurst="100"/&gt; &lt;/Filters&gt; 
&lt;/Console&gt;`</documentation></annotation><attribute name="level" 
type="log4j:org.apache.logging.log4j.Level"><annotation><documentation>Sets the 
logging level to use.</documentation></annotation></attribute><attribute 
name="maxBurst" type="long"><annotation><documentation>Sets the maximum [...]
+
+Defaults to Result.
+NEUTRAL.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>Sets
 the Result to return when the filter does not match.
+
+The default is Result.
+DENY.</documentation></annotation></attribute><attribute name="rate" 
type="float"><annotation><documentation>Sets the average number of events per 
second to 
allow.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.filter.CompositeFilter"><annotation><documentation>Composes
 and invokes one or more filters.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.Filter" minOccurs="0" 
maxOccurs="unbounded"><a [...]
+
+Defaults to Result.
+NEUTRAL.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>Sets
 the Result to return when the filter does not match.
+
+The default is Result.
+DENY.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.filter.DynamicThresholdFilter"><annotation><documentation>Compares
 against a log level that is associated with a context value.
+
+By default the context is the apiref:org.apache.logging.log4j.ThreadContext[], 
but users may 
apiref:org.apache.logging.log4j.core.impl.ContextDataInjectorFactory[configure] 
a custom apiref:org.apache.logging.log4j.core.ContextDataInjector[] which 
obtains context data from some other 
source.</documentation></annotation><sequence><element name="KeyValuePair" 
type="log4j:org.apache.logging.log4j.core.util.KeyValuePair" minOccurs="0" 
maxOccurs="unbounded"><annotation><documentation>An array  [...]
+
+Extends apiref:org.apache.logging.log4j.core.LifeCycle[] since filters have a 
life cycle.</documentation></annotation><choice><element name="Cassandra" 
type="log4j:org.apache.logging.log4j.cassandra.CassandraAppender"/><element 
name="Async" 
type="log4j:org.apache.logging.log4j.core.appender.AsyncAppender"/><element 
name="Console" 
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender"/><element 
name="CountingNoOp" 
type="log4j:org.apache.logging.log4j.core.appender.CountingNoO [...]
+
+Defaults to Result.
+NEUTRAL.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>Sets
 the Result to return when the filter does not match.
+
+The default is Result.
+DENY.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.filter.LevelRangeFilter"><annotation><documentation>This
 filter returns the 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#onMatch[] result 
if the level of the apiref:org.apache.logging.log4j.core.LogEvent[] is in the 
range of the configured 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#minLevel[] and 
apiref:org.apache.logging.log4j.core.filter.LevelRa [...]
+
+The default values for 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#minLevel[] and 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#maxLevel[] are set 
to apiref:org.apache.logging.log4j.Level#OFF[] and 
apiref:org.apache.logging.log4j.Level#ALL[], respectively.
+The default values for 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#onMatch[] and 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#onMismatch[] are 
set to apiref:org.apache.logging.log4j.core.filter.Result#NEUTRAL[] and 
apiref:org.apache.logging.log4j.core.filter.Result#DENY[], respectively.
+
+The levels get compared by their associated integral values; 
apiref:org.apache.logging.log4j.Level#OFF[] has an integral value of 0, 
apiref:org.apache.logging.log4j.Level#FATAL[] 100, 
apiref:org.apache.logging.log4j.Level#ERROR[] 200, and so on.
+For example, if the filter is configured with 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#maxLevel[] set to 
apiref:org.apache.logging.log4j.Level#INFO[], the filter will return 
apiref:org.apache.logging.log4j.core.filter.LevelRangeFilter#onMismatch[] 
result for apiref:org.apache.logging.log4j.core.LogEvent[]s of level with 
higher integral values; apiref:org.apache.logging.log4j.Level#DEBUG[], 
apiref:org.apache.logging.log4j.Level#TRACE[], etc.</documentation></annotation 
[...]
+
+Defaults to Result.
+NEUTRAL.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>Sets
 the Result to return when the filter does not match.
+
+The default is Result.
+DENY.</documentation></annotation></attribute><attribute name="pollInterval" 
type="long"><annotation><documentation>Set the frequency in seconds that 
changes to the list a ThreadContext valudes should be 
checked.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.filter.NoMarkerFilter"><annotation><documentation>This
 filter returns the onMatch result if there is no marker in the 
LogEvent.</documentation></annotation><attribute name="onM [...]
+
+Defaults to Result.
+NEUTRAL.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>Sets
 the Result to return when the filter does not match.
+
+The default is Result.
+DENY.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.filter.RegexFilter"><annotation><documentation>This
 filter returns the onMatch result if the message matches the regular 
expression.
+
+The "useRawMsg" attribute can be used to indicate whether the regular 
expression should be applied to the result of calling Message.
+getMessageFormat (true) or Message.
+getFormattedMessage() (false). The default is 
false.</documentation></annotation><sequence></sequence><attribute 
name="onMatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>The
 action to perform when a match 
occurs.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>The
 action to perform when a mismatch 
occurs.</documentation></annotation></attribut [...]
+The script must return a boolean value.
+Either script or scriptFile must be 
provided.</documentation></annotation></group></sequence><attribute 
name="onMatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>The
 action to take if a match 
occurs.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>The
 action to take if no match 
occurs.</documentation></annotation></attribute></complexType><comp [...]
+
+Defaults to Result.
+NEUTRAL.</documentation></annotation></attribute><attribute name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>Sets
 the Result to return when the filter does not match.
+
+The default is Result.
+DENY.</documentation></annotation></attribute><attribute name="text" 
type="string"></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.filter.StructuredDataFilter"><annotation><documentation>Filter
 based on data in a 
StructuredDataMessage.</documentation></annotation><sequence><element 
name="KeyValuePair" 
type="log4j:org.apache.logging.log4j.core.util.KeyValuePair" minOccurs="0" 
maxOccurs="unbounded"><annotation><documentation>Key and value 
pairs.</documentation></ [...]
+If not "or" the operation will be an 
"and".</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.filter.ThreadContextMapFilter"><annotation><documentation>Filter
 based on a value in the Thread Context Map 
(MDC).</documentation></annotation><sequence><element name="KeyValuePair" 
type="log4j:org.apache.logging.log4j.core.util.KeyValuePair" minOccurs="0" 
maxOccurs="unbounded"></element></sequence><attribute name="onMatch" 
type="log4j:org.apa [...]
+
+For example, if the ThresholdFilter is configured with Level ERROR and the 
LogEvent contains Level DEBUG then the onMismatch value will be returned since 
ERROR events are more specific than DEBUG.
+The default Level is ERROR.</documentation></annotation><attribute 
name="level" 
type="log4j:org.apache.logging.log4j.Level"><annotation><documentation>The log 
Level.</documentation></annotation></attribute><attribute name="onMatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><documentation>The
 action to take on a match.</documentation></annotation></attribute><attribute 
name="onMismatch" 
type="log4j:org.apache.logging.log4j.core.Filter.Result"><annotation><docume 
[...]
+
+Depends on Apache Commons CSV 
1.2.</documentation></annotation><choice><element name="CsvLogEventLayout" 
type="log4j:org.apache.logging.log4j.core.layout.CsvLogEventLayout"/><element 
name="CsvParameterLayout" 
type="log4j:org.apache.logging.log4j.core.layout.CsvParameterLayout"/></choice></group><group
 
name="org.apache.logging.log4j.core.layout.AbstractJacksonLayout"><choice><element
 name="JsonLayout" 
type="log4j:org.apache.logging.log4j.core.layout.JsonLayout"/><element 
name="XmlLayout"  [...]
+
+Since 2.4.1, this class has custom logic to convert ISO-8859-1 or US-ASCII 
Strings to byte[] arrays to improve performance: all characters are simply cast 
to bytes.</documentation></annotation><choice><element name="CsvLogEventLayout" 
type="log4j:org.apache.logging.log4j.core.layout.CsvLogEventLayout"/><element 
name="CsvParameterLayout" 
type="log4j:org.apache.logging.log4j.core.layout.CsvParameterLayout"/><element 
name="GelfLayout" type="log4j:org.apache.logging.log4j.core.layout.GelfLay [...]
+
+Depends on Apache Commons CSV 1.2.</documentation></annotation><attribute 
name="footer" type="string"></attribute><attribute name="format" 
type="string"></attribute><attribute name="header" 
type="string"></attribute><attribute name="nullString" 
type="string"></attribute><attribute name="quoteMode" 
type="log4j:org.apache.commons.csv.QuoteMode"></attribute><attribute 
name="recordSeparator" type="string"></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.layout.CsvPa [...]
+
+The event message is currently ignored.
+
+Best used with:
+
+`logger. debug(new ObjectArrayMessage(1, 2, "Bob"));` Depends on Apache 
Commons CSV 1.4.</documentation></annotation><attribute name="footer" 
type="string"></attribute><attribute name="format" 
type="string"></attribute><attribute name="header" 
type="string"></attribute><attribute name="nullString" 
type="string"></attribute><attribute name="quoteMode" 
type="log4j:org.apache.commons.csv.QuoteMode"></attribute><attribute 
name="recordSeparator" type="string"></attribute></complexType><group  [...]
+
+This layout compresses JSON to GZIP or ZLIB (the `compressionType`) if log 
event data is larger than 1024 bytes (the `compressionThreshold`). This layout 
does not implement chunking.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.layout.PatternSelector" 
minOccurs="0"><annotation><documentation>The PatternSelector to use to format 
the message.</documentation></annotation></group><element name="KeyValuePair" 
type="log4j:org.apache.logging.log4j.core.u [...]
+
+Useful for Graylog GELF TCP 
input.</documentation></annotation></attribute><attribute 
name="includeStacktrace" type="boolean"><annotation><documentation>Whether to 
include full stacktrace of logged Throwables (optional, default to true).
+
+If set to false, only the class name and message of the Throwable will be 
included.</documentation></annotation></attribute><attribute 
name="includeThreadContext" type="boolean"><annotation><documentation>Whether 
to include thread context as additional fields (optional, default to 
true).</documentation></annotation></attribute><attribute 
name="mapMessageExcludes" type="string"><annotation><documentation>A comma 
separated list of MapMessage keys to exclude;</documentation></annotation></a 
[...]
+
+Appenders using this layout should have their encoding set to UTF-8 or UTF-16, 
otherwise events containing non ASCII characters could result in corrupted log 
files.</documentation></annotation><attribute name="contentType" 
type="string"></attribute><attribute name="datePattern" 
type="string"></attribute><attribute name="fontName" 
type="string"></attribute><attribute name="fontSize" 
type="log4j:org.apache.logging.log4j.core.layout.HtmlLayout.FontSize"></attribute><attribute
 name="location [...]
+
+Please use JsonTemplateLayout instead.
+Appends a series of JSON events as strings serialized as bytes.
+
+== Additional Fields
+
+If you configure `complete="true"`, the appender outputs a well-formed JSON 
document.
+By default, with `complete="false"`, you should include the output as an 
_external file_ in a separate file to form a well-formed JSON document.
+
+If `complete="false"`, the appender does not write the JSON open array 
character "[" at the start of the document, "]" and the end, nor comma "," 
between records.
+
+Appenders using this layout should have their `charset` set to `UTF-8` or 
`UTF-16`, otherwise events containing non ASCII characters could result in 
corrupted log files.
+
+By default, the JSON layout is not compact (a.k.a. "pretty") with 
`compact="false"`, which means the appender uses end-of-line characters and 
indents lines to format the text.
+If `compact="true"`, then no end-of-line or indentation is used.
+Message content may contain, of course, escaped end-of-lines.
+
+This property allows addition of custom fields into generated JSON.
+`&lt;JsonLayout&gt;&lt;KeyValuePair key="foo" 
value="bar"/&gt;&lt;/JsonLayout&gt;` inserts `"foo":"bar"` directly into JSON 
output.
+Supports Lookup expressions.</documentation></annotation><sequence><element 
name="KeyValuePair" 
type="log4j:org.apache.logging.log4j.core.util.KeyValuePair" minOccurs="0" 
maxOccurs="unbounded"><annotation><documentation>Additional fields to set on 
each log event.</documentation></annotation></element></sequence><attribute 
name="compact" type="boolean"></attribute><attribute name="complete" 
type="boolean"></attribute><attribute name="endOfLine" 
type="string"></attribute><attribute name="e [...]
+
+If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</documentation></annotation></attribute><attribute 
name="includeTimeMillis" type="boolean"><annotation><documentation>Whether to 
include the timestamp (in addition to the Instant) (optional, default to 
false).</documentation></annotation></attribute><attribute name="locationInfo" 
type="boolean"></attribute><attribute name="objectMessageAsJsonObject" 
type="boolean"></attribute><attribute name="p [...]
+
+Useful in combination with a JMS Appender to map a Log4j 
apiref:org.apache.logging.log4j.core.layout.org.apache.logging.log4j.message.MapMessage[]
 or 
apiref:org.apache.logging.log4j.core.layout.org.apache.logging.log4j.message.StringMapMessage[]
 to a JMS 
apiref:org.apache.logging.log4j.core.layout.javax.jms.MapMessage[].</documentation></annotation></complexType><complexType
 
name="org.apache.logging.log4j.core.layout.PatternLayout"><annotation><documentation>A
 flexible layout configurabl [...]
+
+The goal of this class is to 
apiref:org.apache.logging.log4j.core.layout.org.apache.logging.log4j.core.Layout#toByteArray[format]
 a apiref:org.apache.logging.log4j.core.LogEvent[] and return the results.
+The format of the result depends on the _conversion pattern_.
+
+The conversion pattern is closely related to the conversion pattern of the 
printf function in C. A conversion pattern is composed of literal text and 
format control expressions called _conversion specifiers_.
+
+See the Log4j Manual for details on the supported pattern 
converters.</documentation></annotation><sequence><group 
ref="log4j:org.apache.logging.log4j.core.layout.PatternSelector" 
minOccurs="0"></group><element name="replace" 
type="log4j:org.apache.logging.log4j.core.pattern.RegexReplacement" 
minOccurs="0"></element></sequence><attribute name="alwaysWriteExceptions" 
type="boolean"></attribute><attribute name="disableAnsi" 
type="boolean"></attribute><attribute name="footer" type="string"> [...]
+Defaults to "true:.</documentation></annotation></attribute><attribute 
name="mdcExcludes" type="string"><annotation><documentation>A comma separated 
list of MDC keys that should be excluded from the 
LogEvent.</documentation></annotation></attribute><attribute name="mdcId" 
type="string"><annotation><documentation>The id to use for the MDC Structured 
Data Element.</documentation></annotation></attribute><attribute 
name="mdcIncludes" type="string"><annotation><documentation>A comma separate 
[...]
+The default is false.</documentation></annotation></attribute><attribute 
name="newLineEscape" type="string"><annotation><documentation>String that 
should be used to replace newlines within the message 
text.</documentation></annotation></attribute><attribute 
name="useTlsMessageFormat" type="boolean"><annotation><documentation>If true 
the message will be formatted according to RFC 
5425.</documentation></annotation></attribute></complexType><complexType 
name="org.apache.logging.log4j.core.l [...]
+
+The returned value will be used as the "key" to choose between one of the 
configured patterns.
+If no key is returned or there is no match the default pattern will be 
used.</documentation></annotation><sequence><element name="PatternMatch" 
type="log4j:org.apache.logging.log4j.core.layout.PatternMatch" minOccurs="0" 
maxOccurs="unbounded"></element><group 
ref="log4j:org.apache.logging.log4j.core.script.AbstractScript" 
minOccurs="0"></group></sequence><attribute name="alwaysWriteExceptions" 
type="boolean"></attribute><attribute name="defaultPattern" 
type="string"></attribute><attribut [...]
+dtd.
+
+== Additional Fields
+
+If you configure `complete="true"`, the appender outputs a well-formed XML 
document where the default namespace is the log4j namespace . By default, with 
`complete="false"`, you should include the output as an _external entity_ in a 
separate file to form a well-formed XML document.
+
+If `complete="false"`, the appender does not write the XML processing 
instruction and the root element.
+
+Appenders using this layout should have their `charset` set to `UTF-8` or 
`UTF-16`, otherwise events containing non-ASCII characters could result in 
corrupted log files.
+
+By default, the XML layout is not compact (compact = not "pretty") with 
`compact="false"`, which means the appender uses end-of-line characters and 
indents lines to format the XML.
+If `compact="true"`, then no end-of-line or indentation is used.
+Message content may contain, of course, end-of-lines.
+
+This property allows addition of custom fields into generated JSON.
+`&lt;XmlLayout&gt;&lt;KeyValuePair key="foo" 
value="bar"/&gt;&lt;/XmlLayout&gt;` inserts `&lt;foo&gt;bar&lt;/foo&gt;` 
directly into XML output.
+Supports Lookup expressions.</documentation></annotation><sequence><element 
name="KeyValuePair" 
type="log4j:org.apache.logging.log4j.core.util.KeyValuePair" minOccurs="0" 
maxOccurs="unbounded"><annotation><documentation>Additional fields to set on 
each log event.</documentation></annotation></element></sequence><attribute 
name="compact" type="boolean"></attribute><attribute name="complete" 
type="boolean"></attribute><attribute name="endOfLine" 
type="string"></attribute><attribute name="e [...]
+
+If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</documentation></annotation></attribute><attribute 
name="includeTimeMillis" type="boolean"><annotation><documentation>Whether to 
include the timestamp (in addition to the Instant) (optional, default to 
false).</documentation></annotation></attribute><attribute name="locationInfo" 
type="boolean"></attribute><attribute name="properties" 
type="boolean"></attribute><attribute name="stacktraceAsStri [...]
+
+== Additional Fields
+
+Appenders using this layout should have their `charset` set to `UTF-8` or 
`UTF-16`, otherwise events containing non ASCII characters could result in 
corrupted log files.
+
+This property allows addition of custom fields into generated JSON.
+`&lt;YamlLayout&gt;&lt;KeyValuePair key="foo" 
value="bar"/&gt;&lt;/YamlLayout&gt;` inserts `foo: "bar"` directly into YAML 
output.
+Supports Lookup expressions.</documentation></annotation><sequence><element 
name="KeyValuePair" 
type="log4j:org.apache.logging.log4j.core.util.KeyValuePair" minOccurs="0" 
maxOccurs="unbounded"><annotation><documentation>Additional fields to set on 
each log event.</documentation></annotation></element></sequence><attribute 
name="compact" type="boolean"></attribute><attribute name="complete" 
type="boolean"></attribute><attribute name="endOfLine" 
type="string"></attribute><attribute name="e [...]
+
+If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</documentation></annotation></attribute><attribute 
name="includeTimeMillis" type="boolean"><annotation><documentation>Whether to 
include the timestamp (in addition to the Instant) (optional, default to 
false).</documentation></annotation></attribute><attribute name="locationInfo" 
type="boolean"></attribute><attribute name="properties" 
type="boolean"></attribute><attribute name="stacktraceAsStri [...]
+
+Handles saving the Configuration.</documentation></annotation><choice><element 
name="interpolator_test" 
type="log4j:org.apache.logging.log4j.core.lookup.InterpolatorTest.Lookup"/><element
 name="log4j" 
type="log4j:org.apache.logging.log4j.core.lookup.Log4jLookup"/></choice></group><group
 
name="org.apache.logging.log4j.core.lookup.AbstractLookup"><annotation><documentation>A
 default lookup for others to 
extend.</documentation></annotation><choice><element name="env" 
type="log4j:org.apache. [...]
+
+By default this is the apiref:org.apache.logging.log4j.ThreadContext[], but 
users may 
apiref:org.apache.logging.log4j.core.impl.ContextDataInjectorFactory[configure] 
a custom apiref:org.apache.logging.log4j.core.ContextDataInjector[] which 
obtains context data from some other 
source.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.lookup.DateLookup"><annotation><documentation>Formats
 the current date or the date in the LogEvent.
+
+The "key" is used as the format String, following the java.
+text.
+SimpleDateFormat date and time pattern 
strings.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.lookup.EnvironmentLookup"><annotation><documentation>Looks
 up keys from environment 
variables.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.lookup.EventLookup"><annotation><documentation>Looks
 up values from the log 
event.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4 [...]
+
+The passed in "key" should be the value of another 
lookup.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.lookup.MainMapLookup"><annotation><documentation>A
 map-based lookup for main arguments.
+
+See 
apiref:org.apache.logging.log4j.core.lookup.MainMapLookup#setMainArguments(String[])[].</documentation></annotation></complexType><group
 
name="org.apache.logging.log4j.core.lookup.MapLookup"><annotation><documentation>A
 map-based lookup.</documentation></annotation><choice><element 
name="jvmrunargs" 
type="log4j:org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup"/><element
 name="main" 
type="log4j:org.apache.logging.log4j.core.lookup.MainMapLookup"/></choice></group><c
 [...]
+
+This class represents the simplest form of a string to string map.
+It has a benefit over a map in that it can create the result on demand based 
on the key.
+
+This class comes complete with various factory methods.
+If these do not suffice, you can subclass and implement your own matcher.
+
+For example, it would be possible to implement a lookup that used the key as a 
primary key, and looked up the value on demand from the 
database</documentation></annotation><choice><element name="ctx" 
type="log4j:org.apache.logging.log4j.core.lookup.ContextMapLookup"/><element 
name="date" 
type="log4j:org.apache.logging.log4j.core.lookup.DateLookup"/><element 
name="env" 
type="log4j:org.apache.logging.log4j.core.lookup.EnvironmentLookup"/><element 
name="event" type="log4j:org.apache.logging [...]
+
+The passed in "key" should be the value of another 
lookup.</documentation></annotation></complexType><group 
name="org.apache.logging.log4j.core.net.Advertiser"><choice><element 
name="default" 
type="log4j:org.apache.logging.log4j.core.config.DefaultAdvertiser"/><element 
name="memory" 
type="log4j:org.apache.logging.log4j.core.config.InMemoryAdvertiser"/><element 
name="multicastdns" 
type="log4j:org.apache.logging.log4j.core.net.MulticastDnsAdvertiser"/></choice></group><simpleType
 name="org [...]
+
+[cols="1,1"]
+|===
+
+h| Numerical Code
+h| Facility
+
+h| Facility
+| 0
+| kernel messages
+
+| 1
+| user-level messages
+
+| 2
+| mail system
+
+| 3
+| system daemons
+
+| 4
+| security/authorization messages
+
+| 5
+| messages generated internally by syslogd
+
+| 6
+| line printer subsystem
+
+| 7
+| network news subsystem
+
+| 8
+| UUCP subsystem
+
+| 9
+| clock daemon
+
+| 10
+| security/authorization messages
+
+| 11
+| FTP daemon
+
+| 12
+| NTP subsystem
+
+| 13
+| log audit
+
+| 14
+| log alert
+
+| 15
+| clock daemon (note 2)
+
+| 16
+| local use 0 (local0)
+
+| 17
+| local use 1 (local1)
+
+| 18
+| local use 2 (local2)
+
+| 19
+| local use 3 (local3)
+
+| 20
+| local use 4 (local4)
+
+| 21
+| local use 5 (local5)
+
+| 22
+| local use 6 (local6)
+
+| 23
+| local use 7 (local7)
+
+|===</documentation></annotation><restriction base="string"><enumeration 
value="KERN"><annotation><documentation>Kernel 
messages.</documentation></annotation></enumeration><enumeration 
value="USER"><annotation><documentation>User level 
messages.</documentation></annotation></enumeration><enumeration 
value="MAIL"><annotation><documentation>Mail 
system.</documentation></annotation></enumeration><enumeration 
value="DAEMON"><annotation><documentation>System 
daemons.</documentation></annotati [...]
+
+The length of property names and values must be 255 bytes or less.
+Entries with names or values larger than 255 bytes will be removed prior to 
advertisement.</documentation></annotation></complexType><simpleType 
name="org.apache.logging.log4j.core.net.Protocol"><annotation><documentation>Enumerates
 the supported protocols.</documentation></annotation><restriction 
base="string"><enumeration value="TCP"><annotation><documentation>TCP 
Protocol.</documentation></annotation></enumeration><enumeration 
value="SSL"><annotation><documentation>SSL Protocol.</docu [...]
+
+* `IPTOS_LOWCOST (0x02)`
+* `IPTOS_RELIABILITY (0x04)`
+* `IPTOS_THROUGHPUT (0x08)`
+* `IPTOS_LOWDELAY (0x10)`
+*</documentation></annotation><restriction base="string"><enumeration 
value="IPTOS_NORMAL"><annotation><documentation>IPTOS_NORMAL 
(0x00)</documentation></annotation></enumeration><enumeration 
value="IPTOS_LOWCOST"><annotation><documentation>IPTOS_LOWCOST 
(0x02)</documentation></annotation></enumeration><enumeration 
value="IPTOS_LOWDELAY"><annotation><documentation>IPTOS_LOWDELAY 
(0x10)</documentation></annotation></enumeration><enumeration 
value="IPTOS_RELIABILITY"><annotation><document [...]
+
+See 
apiref:java.net.Socket#setPerformancePreferences(int,int,int)[].</documentation></annotation></element></sequence><attribute
 name="rfc1349TrafficClass" 
type="log4j:org.apache.logging.log4j.core.net.Rfc1349TrafficClass"><annotation><documentation>See
 apiref:java.net.Socket#setTrafficClass(int)[].
+
+See 
apiref:java.net.Socket#setTrafficClass(int)[].</documentation></annotation></attribute></complexType><complexType
 
name="org.apache.logging.log4j.core.net.SocketPerformancePreferences"><annotation><documentation>Holds
 all socket options settable via 
apiref:java.net.Socket#setPerformancePreferences(int,int,int)[].
+
+The apiref:java.net.Socket#setPerformancePreferences(int,int,int)[] API may 
not be implemented by a JRE.</documentation></annotation><attribute 
name="bandwidth" type="int"></attribute><attribute name="connectionTime" 
type="int"></attribute><attribute name="latency" 
type="int"></attribute></complexType><group 
name="org.apache.logging.log4j.core.net.ssl.AbstractKeyStoreConfiguration"><annotation><documentation>Configuration
 of the KeyStore</documentation></annotation><choice><element name= [...]
+See the Java Secure Socket Extension Reference Guide for information about 
these names.</documentation></annotation></attribute><attribute name="location" 
type="string"><annotation><documentation>The location of the KeyStore, a file 
path, URL or resource.</documentation></annotation></attribute><attribute 
name="password" type="string"><annotation><documentation>The password to access 
the KeyStore.</documentation></annotation></attribute><attribute 
name="passwordEnvironmentVariable" type= [...]
+oracle.
+com/javase/7/docs/technotes/guides/security/StandardNames.
+html#SSLContext</documentation></annotation></attribute></complexType><group 
name="org.apache.logging.log4j.core.net.ssl.StoreConfiguration"><choice><element
 name="KeyStore" 
type="log4j:org.apache.logging.log4j.core.net.ssl.KeyStoreConfiguration"/><element
 name="TrustStore" 
type="log4j:org.apache.logging.log4j.core.net.ssl.TrustStoreConfiguration"/></choice></group><complexType
 
name="org.apache.logging.log4j.core.net.ssl.TrustStoreConfiguration"><annotation><documentation>Configuration
 o [...]
+See the Java Secure Socket Extension Reference Guide for information these 
names.</documentation></annotation></attribute><attribute name="type" 
type="string"><annotation><documentation>The KeyStore type, null defaults to 
`"JKS"`.</documentation></annotation></attribute></complexType><group 
name="org.apache.logging.log4j.core.pattern.AbstractPatternConverter"><annotation><documentation>AbstractPatternConverter
 is an abstract class that provides the formatting functionality that derived c 
[...]
+
+Conversion specifiers in a conversion patterns are parsed to individual 
PatternConverters.
+Each of which is responsible for converting an object in a converter specific 
manner.</documentation></annotation><choice><element 
name="TestFormatPatternConverter" 
type="log4j:org.apache.logging.log4j.core.TestPatternConverters.TestFormatPatternConverter"/><element
 name="TestParametersPatternConverter" 
type="log4j:org.apache.logging.log4j.core.TestPatternConverters.TestParametersPatternConverter"/><element
 name="black" 
type="log4j:org.apache.logging.log4j.core.pattern.AbstractStyleNameC [...]
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation><choice><element name="black" 
type="log4j:org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Black"/><element
 name="blue" 
type="log4j:org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Blue"/><element
 name="cyan" 
type="log4j:org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Cyan"/><element
 name="green" type="log4j:org.apache.logging.log4j.core.pattern.Abst [...]
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Blue"><annotation><documentation>Blue
 style pattern converter.
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Cyan"><annotation><documentation>Cyan
 style pattern converter.
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Green"><annotation><documentation>Green
 style pattern converter.
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Magenta"><annotation><documentation>Magenta
 style pattern converter.
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Red"><annotation><documentation>Red
 style pattern converter.
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.White"><annotation><documentation>White
 style pattern converter.
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.AbstractStyleNameConverter.Yellow"><annotation><documentation>Yellow
 style pattern converter.
+
+Adds ANSI color styling to the result of the enclosed 
pattern.</documentation></annotation></complexType><group 
name="org.apache.logging.log4j.core.pattern.AnsiConverter"><annotation><documentation>Marks
 classes that implement ANSI escape code 
conversions.</documentation></annotation><choice><element name="highlight" 
type="log4j:org.apache.logging.log4j.core.pattern.HighlightConverter"/><element 
name="style" 
type="log4j:org.apache.logging.log4j.core.pattern.StyleConverter"/></choice></gr
 [...]
+
+Supported formats include HTML (default) and 
JSON.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.EndOfBatchPatternConverter"><annotation><documentation>Formats
 the EndOfBatch.</documentation></annotation></complexType><group 
name="org.apache.logging.log4j.core.pattern.EqualsBaseReplacementConverter"><annotation><documentation>Equals
 pattern converter.</documentation></annotation><choice><element 
name="equalsIgnoreCase" type="log4j:org. [...]
+
+The extended stack trace will also include the location of where the class was 
loaded from and the version of the jar if 
available.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.FileDatePatternConverter"><annotation><documentation>Formats
 a date by delegating to 
apiref:org.apache.logging.log4j.core.pattern.DatePatternConverter[].
+
+The default date pattern for a %d specifier in a file name is different than 
the %d pattern in pattern 
layout.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.FileLocationPatternConverter"><annotation><documentation>Returns
 the event's line location information in a 
StringBuilder.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.FullLocationPatternConverter"><annotation><documentation>For
 [...]
+
+Formats the result of a pattern using a color appropriate for the Level in the 
LogEvent.
+
+For example:
+
+[source,java]
+----
+%highlight{%d{ ISO8601 } [%t] %-5level: %msg%n%throwable}
+----
+
+You can define custom colors for each Level:
+
+[source,java]
+----
+%highlight{%d{ ISO8601 } [%t] %-5level: %msg%n%throwable}{FATAL=red, 
ERROR=red, WARN=yellow, INFO=green, DEBUG=cyan,
+TRACE=black}
+----
+
+You can use a predefined style:
+
+[source,java]
+----
+%highlight{%d{ ISO8601 } [%t] %-5level: %msg%n%throwable}{STYLE=DEFAULT}
+----
+
+The available predefined styles are:
+
+* `Default`
+* `Log4j` - The same as `Default`
+* `Logback`
+
+You can use whitespace around the comma and equal sign.
+The names in values MUST come from the 
apiref:org.apache.logging.log4j.core.pattern.AnsiEscape[] enum, case is 
normalized to upper-case internally.
+
+To disable ANSI output unconditionally, specify an additional option 
`disableAnsi=true`, or to disable ANSI output if no console is detected, 
specify option `noConsoleNoAnsi=true` e.g..
+
+[source,java]
+----
+%highlight{%d{ ISO8601 } [%t] %-5level: %msg%n%throwable}{STYLE=DEFAULT, 
noConsoleNoAnsi=true}
+----</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.IntegerPatternConverter"><annotation><documentation>Formats
 an integer.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.LevelPatternConverter"><annotation><documentation>Returns
 the event's level in a 
StringBuilder.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.LineLocationPatternCon [...]
+util.
+Hashtable.
+toString(), or to output the value of a specific key within the 
Map.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.MarkerPatternConverter"><annotation><documentation>Returns
 events' full marker string in a 
StringBuilder.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.MarkerSimpleNamePatternConverter"><annotation><documentation>Appends
 an event's maker name to a StringBuilder.</documen [...]
+
+Limit contained text to a maximum length.
+On invalid length the default value 100 is used (and an error message is 
logged). If max length is greater than 20, an abbreviated text will get 
ellipsis ("...") appended.
+Example usage (for email subject): `"%maxLen{[AppName, ${hostName}, 
${web:contextPath}] %p: %c{1} - %m%notEmpty{ 
=&gt;%ex{short}}}{160}"`</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.MdcPatternConverter"><annotation><documentation>Able
 to handle the contents of the LogEvent's MDC and either output the entire 
contents of the properties in a similar format to the java.
+util.
+Hashtable.
+toString(), or to output the value of a specific key within the property 
bundle when this pattern converter has the option 
set.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.MessagePatternConverter"><annotation><documentation>Returns
 the event's rendered message in a 
StringBuilder.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.MethodLocationPatternConverter"><annotation><documentatio
 [...]
+
+The extended stack trace will also include the location of where the class was 
loaded from and the version of the jar if 
available.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter"><annotation><documentation>Formats
 the event sequence 
number.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.StyleConverter"><annotation><documentation>Style
 pattern converter.
+
+Adds ANSI color styling to the result of the enclosed pattern.
+
+To disable ANSI output unconditionally, specify an additional option 
`disableAnsi=true`, or to disable ANSI output if no console is detected, 
specify option 
`noConsoleNoAnsi=true`.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.ThreadIdPatternConverter"><annotation><documentation>Formats
 the event thread ID.</documentation></annotation></complexType><complexType 
name="org.apache.logging.log4j.core.pattern.ThreadNamePatternConverter"><an 
[...]
+
+Causes a reconfiguration when a file 
changes.</documentation></annotation><choice><element name="http" 
type="log4j:org.apache.logging.log4j.core.config.HttpWatcher"/></choice></group><group
 name="org.apache.logging.log4j.core.util.Builder"><annotation><documentation>A 
type of builder that can be used to configure and create a instances using a 
Java DSL instead of through a configuration file.
+
+These builders are primarily useful for internal code and unit tests, but they 
can technically be used as a verbose alternative to configuration files.
+
+When creating _plugin_ builders, it is customary to create the builder class 
as a public static inner class called `Builder`. For instance, the builder 
class for 
apiref:org.apache.logging.log4j.core.util.org.apache.logging.log4j.core.layout.PatternLayout[PatternLayout]
 would be `PatternLayout. 
Builder`.</documentation></annotation><choice><element name="SocketOptions" 
type="log4j:org.apache.logging.log4j.core.net.SocketOptions"/><element 
name="SocketPerformancePreferences" type="log4j:or [...]
+
+Logs with apiref:jakarta.servlet.ServletContext#log(String,Throwable)[] if 
true and with apiref:jakarta.servlet.ServletContext#log(String)[] if 
false.</documentation></annotation></attribute><attribute name="name" 
type="string"></attribute></complexType></schema>
diff --git a/content/xml/ns/log4j-config-2.xsd 
b/content/xml/ns/log4j-config-2.xsd
new file mode 120000
index 00000000..ebba48f3
--- /dev/null
+++ b/content/xml/ns/log4j-config-2.xsd
@@ -0,0 +1 @@
+log4j-config-2.23.1.xsd
\ No newline at end of file


Reply via email to