This is an automated email from the ASF dual-hosted git repository. vy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/logging-site.git
commit 2d775852dd9147a5e7a84b7ccc7b2e894c8a3b85 Author: Volkan Yazıcı <[email protected]> AuthorDate: Tue Mar 19 11:36:00 2024 +0100 Add Log4j 2 XSD --- xml/ns/index.adoc | 69 ++++- xml/ns/log4j-config-2.23.1.xsd | 598 +++++++++++++++++++++++++++++++++++++++++ xml/ns/log4j-config-2.xsd | 1 + 3 files changed, 661 insertions(+), 7 deletions(-) diff --git a/xml/ns/index.adoc b/xml/ns/index.adoc index 6a7174df..d781f00f 100644 --- a/xml/ns/index.adoc +++ b/xml/ns/index.adoc @@ -20,10 +20,52 @@ All XML Schemas for Apache Logging Services projects are published at this directory. The canonical name for this directory is `https://logging.apache.org/xml/ns`. +[#log4j2] +== Log4j 2 schemas + +xref:/log4j/2.x[Log4j 2] is a Java logging framework. +Following schemas model the Log4j runtime configuration, i.e., `log4j2.xml`. + +[%header,cols="3*"] +|=== +|Publication date +|File name +|Description + +|2024-03-19 +|xref:log4j-config-2.23.1.xsd[] +|Released with link:/log4j/2.x/release-notes.html#release-notes-2-23-1[Log4j `2.23.1`] + +|N/A +|xref:log4j-config-2.xsd[] +|Points to the most recent XSD. +*Users are recommended to refer to this XSD in their XML files.* +|=== + +.Example Log4j 2 schema usage +[source,xml] +---- +<?xml version="1.0" encoding="UTF-8"?> +<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://logging.apache.org/xml/ns" + xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-config-2.xsd"> + <Appenders> + <Console name="Console" target="SYSTEM_OUT"> + <PatternLayout pattern="%d [%t] %p %c - %m%n"/> + </Console> + </Appenders> + <Loggers> + <Root level="warn"> + <AppenderRef ref="Console"/> + </Root> + </Loggers> +</Configuration> +---- + [#log4j-changelog] -== `log4j-changelog` schemas +== Log4j Changelog schemas -https://logging.apache.org/log4j/tools/latest/#log4j-changelog[log4j-changelog] is a tool to maintain changelogs. +link:/log4j/tools/latest/#log4j-changelog[Log4j Changelog] is a tool to maintain changelogs. It is designed for Apache Log4j, but can be used for any Java project. [%header,cols="3*"] @@ -34,19 +76,19 @@ It is designed for Apache Log4j, but can be used for any Java project. |2023-02-03 |xref:log4j-changelog-0.1.0.xsd[] -|Released with xref:/log4j/tools/latest/#release-notes-0-2-0[Log4j Tools `0.2.0`] +|Released with link:/log4j/tools/latest/#release-notes-0-2-0[Log4j Tools `0.2.0`] |2023-03-17 |xref:log4j-changelog-0.1.1.xsd[] -|Released with xref:/log4j/tools/latest/#release-notes-0-3-0[Log4j Tools `0.3.0`] +|Released with link:/log4j/tools/latest/#release-notes-0-3-0[Log4j Tools `0.3.0`] |2023-09-28 |xref:log4j-changelog-0.1.2.xsd[] -|Released with xref:/log4j/tools/latest/#release-notes-0-5-0[Log4j Tools `0.5.0`] +|Released with link:/log4j/tools/latest/#release-notes-0-5-0[Log4j Tools `0.5.0`] |2023-12-13 |xref:log4j-changelog-0.1.3.xsd[] -|Released with xref:/log4j/tools/latest/#release-notes-0-7-0[Log4j Tools `0.7.0`] +|Released with link:/log4j/tools/latest/#release-notes-0-7-0[Log4j Tools `0.7.0`] |2024-03-15 |xref:log4j-changelog-0.2.0.xsd[] @@ -55,5 +97,18 @@ It is designed for Apache Log4j, but can be used for any Java project. |N/A |xref:log4j-changelog-0.xsd[] |Points to the most recent XSD of major version `0`. -Users are recommended to refer to this XSD in their XML files. +*Users are recommended to refer to this XSD in their XML files.* |=== + +.Example Log4j Changelog schema usage +[source,xml] +---- +<?xml version="1.0" encoding="UTF-8"?> +<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"> + <issue id="2370" link="https://github.com/apache/logging-log4j2/pull/2370"/> + <description format="asciidoc">Update `actions/checkout` to version `4.1.2`</description> +</entry> +---- diff --git a/xml/ns/log4j-config-2.23.1.xsd b/xml/ns/log4j-config-2.23.1.xsd new file mode 100644 index 00000000..2f5ca312 --- /dev/null +++ b/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<PathWithAttributes>`. 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 `<asyncLogger>` or `<asyncRoot>` 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. +`<Console name="console"> <PatternLayout pattern="%-5p %d{dd-MMM-yyyy HH:mm:ss} %x %t %m%n"/> <Filters> <BurstFilter level="INFO" rate="16" maxBurst="100"/> </Filters> </Console>`</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. +`<JsonLayout><KeyValuePair key="foo" value="bar"/></JsonLayout>` 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. +`<XmlLayout><KeyValuePair key="foo" value="bar"/></XmlLayout>` inserts `<foo>bar</foo>` 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. +`<YamlLayout><KeyValuePair key="foo" value="bar"/></YamlLayout>` 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{ =>%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/xml/ns/log4j-config-2.xsd b/xml/ns/log4j-config-2.xsd new file mode 120000 index 00000000..ebba48f3 --- /dev/null +++ b/xml/ns/log4j-config-2.xsd @@ -0,0 +1 @@ +log4j-config-2.23.1.xsd \ No newline at end of file
