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

vy pushed a commit to branch 2.x-docgen
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 8dd9c6c56a3d09aae40a82e565364e8b52fd5194
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Tue Mar 19 12:14:57 2024 +0100

    Remove references to the old XSD
---
 .../src/main/resources/Log4j-config.xsd            | 1405 --------------------
 .../log4j/core/config/xml/XmlSchemaTest.java       |  103 --
 .../log4j/core/config/xml/XmlConfiguration.java    |    3 +-
 log4j-core/src/main/resources/Log4j-config.xsd     | 1405 --------------------
 4 files changed, 1 insertion(+), 2915 deletions(-)

diff --git a/log4j-core-test/src/main/resources/Log4j-config.xsd 
b/log4j-core-test/src/main/resources/Log4j-config.xsd
deleted file mode 100644
index a5ae2d28a5..0000000000
--- a/log4j-core-test/src/main/resources/Log4j-config.xsd
+++ /dev/null
@@ -1,1405 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<schema xmlns="http://www.w3.org/2001/XMLSchema";
-        xmlns:tns="http://logging.apache.org/log4j/2.0/config";
-        targetNamespace="http://logging.apache.org/log4j/2.0/config";
-        elementFormDefault="qualified">
-
-   <!--
-    
================================================================================================================================
-    <Configuration> root element
-    
================================================================================================================================
-    -->
-   <element name="Configuration">
-      <complexType>
-         <sequence>
-            <choice minOccurs="0">
-               <element name="AsyncWaitStrategyFactory">
-                  <complexType>
-                     <attribute name="class" type="string" use="required"/>
-                  </complexType>
-               </element>
-            </choice>
-            <choice minOccurs="0">
-               <element name="CustomLevels" type="tns:CustomLevelsType">
-                  <unique name="UniqueCustomLevelName">
-                     <selector xpath="tns:CustomLevel" />
-                     <field xpath="@name" />
-                  </unique>
-               </element>
-               <element name="CustomLevel" type="tns:CustomLevelType" />
-            </choice>
-            <element name="Properties" minOccurs="0">
-               <complexType>
-                  <sequence>
-                     <element name="Property" type="tns:PropertyType" 
minOccurs="0" maxOccurs="unbounded" />
-                  </sequence>
-               </complexType>
-               <unique name="UniquePropertyName">
-                  <selector xpath="tns:Property" />
-                  <field xpath="@name" />
-               </unique>
-            </element>
-
-            <element name="Scripts" minOccurs="0" maxOccurs="unbounded">
-               <complexType>
-                  <sequence>
-                     <element name="ScriptFile" minOccurs="0" 
maxOccurs="unbounded">
-                        <complexType>
-                           <attribute name="name" type="string" use="required" 
/>
-                           <attribute name="language" type="string" />
-                           <attribute name="path" type="string" use="required" 
/>
-                           <attribute name="charset" type="string" />
-                        </complexType>
-                     </element>
-                  </sequence>
-               </complexType>
-            </element>
-
-            <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-
-            <element name="Appenders" type="tns:AppendersType" minOccurs="0" />
-
-            <element name="Loggers" type="tns:LoggersType" minOccurs="0">
-               <unique name="UniqueLoggerName">
-                  <selector xpath="tns:Logger" />
-                  <field xpath="@name" />
-               </unique>
-            </element>
-         </sequence>
-
-         <attribute name="advertiser" type="string">
-            <annotation>
-               <documentation>The Advertiser plugin name which will be used to 
advertise individual FileAppender or SocketAppender configurations. The only
-                  Advertiser plugin provided is 'multicastdns".
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="dest" type="string">
-            <annotation>
-               <documentation>Either "err" for stderr, "out" for stdout, a 
file path, or a URL.</documentation>
-            </annotation>
-         </attribute>
-         <attribute name="monitorInterval" type="tns:IntegerType">
-            <annotation>
-               <documentation>The minimum amount of time, in seconds, that 
must elapse before the file configuration is checked for 
changes.</documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>The name of the configuration.</documentation>
-            </annotation>
-         </attribute>
-         <attribute name="packages" type="string">
-            <annotation>
-               <documentation>A comma separated list of package names to 
search for plugins. Plugins are only loaded once per classloader so changing 
this value
-                  may not have any effect upon reconfiguration.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="schema" type="string">
-            <annotation>
-               <documentation>Identifies the location for the classloader to 
located the XML Schema to use to validate the configuration. Only valid when 
strict
-                  is set to true. If not set no schema validation will take 
place.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="shutdownHook">
-            <annotation>
-               <documentation>Specifies whether or not Log4j should 
automatically shutdown when the JVM shuts down. The shutdown hook is enabled by 
default but
-                  may be disabled by setting this attribute to "disable".
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <pattern value="(|disable|\$\{[^{}]+\})" />
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="shutdownTimeout" type="tns:IntegerType" default="0">
-            <annotation>
-               <documentation>Specifies how many milliseconds appenders and 
background tasks will get to shutdown when the JVM shuts down. Default is zero 
which
-                  mean that each appender uses its default timeout, and don't 
wait for background tasks.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="status">
-            <annotation>
-               <documentation>The level of internal Log4j events that should 
be logged to the console. Valid values for this attribute are "trace", "debug",
-                  "info", "warn", "error" and "fatal".
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <pattern
-                     
value="([Tt][Rr][Aa][Cc][Ee]|[Dd][Ee][Bb][Uu][Gg]|[Ii][Nn][Ff][Oo]|[Ww][Aa][Rr][Nn]|[Ee][Rr][Rr][Oo][Rr]|[Ff][Aa][Tt][Aa][Ll]|[Oo][Ff][Ff]|\$\{[^{}]+\})"
 />
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="strict" type="tns:BooleanType">
-            <annotation>
-               <documentation>Enables the use of the strict XML format. Not 
supported in JSON configurations.</documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <!--
-    
================================================================================================================================
-    <Configuration><CustomLevels> type and related types
-    
================================================================================================================================
-    -->
-   <complexType name="CustomLevelsType">
-      <sequence>
-         <element name="CustomLevel" type="tns:CustomLevelType" minOccurs="0" 
maxOccurs="unbounded" />
-      </sequence>
-   </complexType>
-
-   <complexType name="CustomLevelType">
-      <attribute name="name" type="string" use="required" />
-      <attribute name="intLevel" type="tns:IntegerType" use="required" />
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Filter types
-    
================================================================================================================================
-    -->
-   <group name="FilterChoiceGroup">
-      <choice>
-         <element name="Filters">
-            <complexType>
-               <group ref="tns:FilterChoiceGroup" minOccurs="0" 
maxOccurs="unbounded" />
-            </complexType>
-         </element>
-         <element name="Filter" type="tns:FilterType" minOccurs="0" />
-         <element name="BurstFilter" type="tns:BurstFilterType" minOccurs="0" 
/>
-         <element name="ContextMapFilter" type="tns:MapFilterType" 
minOccurs="0" />
-         <element name="DynamicThresholdFilter" 
type="tns:DynamicThresholdFilterType" minOccurs="0" />
-         <element name="MapFilter" type="tns:MapFilterType" minOccurs="0" />
-         <element name="MarkerFilter" type="tns:MarkerFilterType" 
minOccurs="0" />
-         <element name="MutableThreadContextMapFilter" 
type="tns:MutableThreadContextMapFilterType" minOccurs="0" />
-         <element name="NoMarkerFilter" type="tns:NoMarkerFilterType" 
minOccurs="0" />
-         <element name="RegexFilter" type="tns:RegexFilterType" minOccurs="0" 
/>
-         <element name="ScriptFilter" type="tns:ScriptFilterType" 
minOccurs="0" />
-         <element name="StructuredDataFilter" 
type="tns:StructuredDataFilterType" minOccurs="0" />
-         <element name="ThreadContextMapFilter" type="tns:MapFilterType" 
minOccurs="0" />
-         <element name="ThresholdFilter" type="tns:ThresholdFilterType" 
minOccurs="0" />
-      </choice>
-   </group>
-
-   <complexType name="AbstractFilterType" abstract="true">
-      <attribute name="onMatch" type="tns:FilterActionType" default="NEUTRAL">
-         <annotation>
-            <documentation>Action to take when the filter matches. May be 
ACCEPT, DENY or NEUTRAL.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="onMismatch" type="tns:FilterActionType" default="DENY">
-         <annotation>
-            <documentation>Action to take when the filter does not match. May 
be ACCEPT, DENY or NEUTRAL.</documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <simpleType name="FilterActionType">
-      <restriction base="string">
-         <enumeration value="ACCEPT" />
-         <enumeration value="accept" />
-         <enumeration value="DENY" />
-         <enumeration value="deny" />
-         <enumeration value="NEUTRAL" />
-         <enumeration value="neutral" />
-      </restriction>
-   </simpleType>
-
-   <complexType name="AbstractFilterTypeWithKeyValuePairs" abstract="true">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <sequence>
-               <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" maxOccurs="unbounded">
-                  <annotation>
-                     <documentation>
-                        One or more KeyValuePair elements that define the 
matching value for the key and the Level to evaluate when the key matches.
-                     </documentation>
-                  </annotation>
-               </element>
-            </sequence>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="BurstFilterType" mixed="true">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="rate" type="string">
-               <annotation>
-                  <documentation>The average number of events per second to 
allow.</documentation>
-               </annotation>
-            </attribute>
-            <attribute name="maxBurst" type="tns:IntegerType">
-               <annotation>
-                  <documentation>The maximum number of events that can occur 
before events are filtered for exceeding the average rate. The default is 10 
times
-                     the rate.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="level" type="string" use="required">
-               <annotation>
-                  <documentation>Level of messages to be filtered. Anything at 
or below this level will be filtered out if maxBurst has been exceeded. The
-                     default is WARN meaning any messages that are higher than 
warn will be logged regardless of the size of a burst.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="FilterType" mixed="true">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <sequence>
-               <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" />
-            </sequence>
-            <attribute name="type" type="string" use="required">
-               <annotation>
-                  <documentation>The filter type, see 
https://logging.apache.org/log4j/2.x/manual/filters.html</documentation>
-               </annotation>
-            </attribute>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="DynamicThresholdFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterTypeWithKeyValuePairs">
-            <attribute name="key" type="string" use="required">
-               <annotation>
-                  <documentation>The name of the item in the ThreadContext Map 
to compare.</documentation>
-               </annotation>
-            </attribute>
-            <attribute name="defaultThreshold" type="string" use="required">
-               <annotation>
-                  <documentation>
-                     Level of messages to be filtered. The default threshold 
only applies if the log event contains the specified ThreadContext Map
-                     item and its value does not match any key in the 
key/value pairs.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MutableThreadContextMapFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="configLocation" type="string">
-               <annotation>
-                  <documentation>
-                     The location of the configuration for the filter.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="pollInterval" type="int">
-               <annotation>
-                  <documentation>
-                     The frequency in seconds that the configuration file 
should be checked for modifications.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="operator" type="string">
-               <annotation>
-                  <documentation>
-                     If the operator is "or" then a match by any one of the 
key/value pairs will be considered to be a match, otherwise all the
-                     key/value pairs must match.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MapFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterTypeWithKeyValuePairs">
-            <attribute name="operator" type="string">
-               <annotation>
-                  <documentation>
-                     If the operator is "or" then a match by any one of the 
key/value pairs will be considered to be a match, otherwise all the
-                     key/value pairs must match.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MarkerFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="marker" type="string" use="required" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="NoMarkerFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="RegexFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="regex" type="string" use="required">
-               <annotation>
-                  <documentation>The regular expression.</documentation>
-               </annotation>
-            </attribute>
-            <attribute name="useRawMsg" type="tns:BooleanType" default="false">
-               <annotation>
-                  <documentation>If true the unformatted message will be used, 
otherwise the formatted message will be used.</documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="ScriptFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <choice>
-               <element name="Script">
-                  <complexType mixed="true">
-                     <attribute name="name" type="string" />
-                     <attribute name="language" type="string" />
-                  </complexType>
-               </element>
-               <element name="ScriptFile" />
-               <element name="ScriptRef" />
-            </choice>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="StructuredDataFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterTypeWithKeyValuePairs">
-            <attribute name="operator" type="string">
-               <annotation>
-                  <documentation>
-                     If the operator is "or" then a match by any one of the 
key/value pairs will be considered to be a match, otherwise all the
-                     key/value pairs must match.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="ThresholdFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="level" type="string" use="required">
-               <annotation>
-                  <documentation>A valid Level name to match 
on.</documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Layout types
-    
================================================================================================================================
-    -->
-   <complexType name="LayoutType">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-      </choice>
-      <attribute name="type" type="string" use="required" />
-      <anyAttribute processContents="lax" />
-   </complexType>
-
-   <complexType name="MessageLayoutType">
-   </complexType>
-
-   <complexType name="PatternLayoutType">
-       <!-- 
https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout -->
-      <sequence>
-         <choice minOccurs="0">
-            <element name="LevelPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="MarkerPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="ScriptPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-         </choice>
-         <element name="Replace" minOccurs="0">
-            <complexType>
-               <attribute name="regex" type="string" />
-               <attribute name="replacement" type="string" />
-            </complexType>
-         </element>
-         <element name="Pattern" type="string" minOccurs="0" />
-      </sequence>
-      <attribute name="alwaysWriteExceptions" type="tns:BooleanType" 
default="true">
-         <annotation>
-            <documentation>If true exceptions are always written even if the 
pattern contains no exception conversions.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="charset" type="string">
-         <annotation>
-            <documentation>The character set to use when converting the syslog 
String to a byte array.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="disableAnsi" type="tns:BooleanType" default="false">
-         <annotation>
-            <documentation>If true, do not output ANSI escape 
codes.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="footer" type="string">
-         <annotation>
-            <documentation>Footer string to include at the bottom of each log 
file.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="header" type="string">
-         <annotation>
-            <documentation>Header string to include at the top of each log 
file.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="noConsoleNoAnsi" type="tns:BooleanType" default="false">
-         <annotation>
-            <documentation>If true and System.console() is null, do not output 
ANSI escape codes.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="pattern" type="string" />
-   </complexType>
-
-   <complexType name="HtmlLayoutType">
-      <attribute name="charset" type="string" />
-      <attribute name="contentType" type="string" />
-      <attribute name="locationInfo" type="tns:BooleanType" />
-      <attribute name="title" type="string" />
-      <attribute name="fontName" type="string" />
-      <attribute name="fontSize" type="string" />
-   </complexType>
-
-   <complexType name="AbstractJsonLayoutType">
-      <sequence>
-         <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" maxOccurs="unbounded">
-            <annotation>
-               <documentation>
-                  One or more KeyValuePair elements that define custom field 
in the output.
-               </documentation>
-            </annotation>
-         </element>
-      </sequence>
-      <attribute name="charset" type="string" />
-      <attribute name="complete" type="tns:BooleanType" />
-      <attribute name="compact" type="tns:BooleanType" />
-      <attribute name="eventEol" type="tns:BooleanType" />
-      <attribute name="endOfLine" type="string" />
-      <attribute name="includeNullDelimiter" type="tns:BooleanType" />
-      <attribute name="includeStacktrace" type="tns:BooleanType" />
-      <attribute name="locationInfo" type="tns:BooleanType" />
-      <attribute name="properties" type="tns:BooleanType" />
-      <attribute name="stacktraceAsString" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="JCsvParameterLayoutType">
-      <complexContent>
-         <extension base="tns:AbstractJsonLayoutType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="GelfLayoutType">
-      <sequence minOccurs="0">
-         <choice minOccurs="0">
-            <element name="LevelPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="MarkerPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="ScriptPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="MessagePattern" type="string" minOccurs="0" />
-         </choice>
-         <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" maxOccurs="unbounded">
-            <annotation>
-               <documentation>
-                  One or more KeyValuePair elements that define custom field 
in the output.
-               </documentation>
-            </annotation>
-         </element>
-      </sequence>
-      <attribute name="host" type="string" />
-      <attribute name="compressionType">
-         <simpleType>
-            <restriction base="string">
-               <enumeration value="GZIP" />
-               <enumeration value="ZLIB" />
-               <enumeration value="OFF" />
-            </restriction>
-         </simpleType>
-      </attribute>
-      <attribute name="compressionThreshold" type="tns:IntegerType" />
-      <attribute name="includeNullDelimiter" type="tns:BooleanType" />
-      <attribute name="includeStacktrace" type="tns:BooleanType" />
-      <attribute name="includeThreadContext" type="tns:BooleanType" />
-      <attribute name="messagePattern" type="string" />
-      <attribute name="threadContextExcludes" type="string" />
-      <attribute name="threadContextIncludes" type="string" />
-      <attribute name="threadContextPrefix" type="string" />
-      <attribute name="mapMessageExcludes" type="string" />
-      <attribute name="mapMessageIncludes" type="string" />
-      <attribute name="mapPrefix" type="string" />
-      <attribute name="omitEmptyFields" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="JsonLayoutType">
-      <complexContent>
-         <extension base="tns:AbstractJsonLayoutType">
-            <attribute name="propertiesAsList" type="tns:BooleanType" />
-            <attribute name="includeTimeMillis" type="tns:BooleanType" />
-            <attribute name="objectMessageAsJsonObject" type="tns:BooleanType" 
/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="XmlLayoutType">
-      <complexContent>
-         <extension base="tns:AbstractJsonLayoutType" />
-      </complexContent>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Appender types
-    
================================================================================================================================
-    -->
-   <complexType name="AppendersType">
-      <sequence minOccurs="0" maxOccurs="unbounded">
-         <element name="Appender" type="tns:AppenderType" minOccurs="0" />
-         <element name="Async" type="tns:AsyncAppenderType" minOccurs="0" />
-         <element name="Console" type="tns:ConsoleAppenderType" minOccurs="0" 
/>
-         <element name="Flume" type="tns:FlumeAppenderType" minOccurs="0" />
-         <element name="JeroMQ" type="tns:JeroMQAppenderType" minOccurs="0" />
-         <element name="JMS" type="tns:JMSAppenderType" minOccurs="0" />
-         <element name="JMSQueue" type="tns:JMSAppenderType" minOccurs="0" />
-         <element name="JMSTopic" type="tns:JMSAppenderType" minOccurs="0" />
-         <element name="Kafka" type="tns:KafkaAppenderType" minOccurs="0" />
-         <element name="Rewrite" type="tns:RewriteAppenderType" minOccurs="0" 
/>
-         <element name="Routing" type="tns:RoutingAppenderType" minOccurs="0" 
/>
-         <element name="SMTP" type="tns:SMTPAppenderType" minOccurs="0" />
-         <element name="File" type="tns:FileAppenderType" minOccurs="0" />
-         <element name="MemoryMappedFile" 
type="tns:MemoryMappedFileAppenderType" minOccurs="0" />
-         <element name="RandomAccessFile" 
type="tns:RandomAccessFileAppenderType" minOccurs="0" />
-         <element name="RollingFile" type="tns:RollingFileAppenderType" 
minOccurs="0" />
-         <element name="RollingRandomAccessFile" 
type="tns:RollingRandomAccessFileAppenderType" minOccurs="0" />
-         <element name="Socket" type="tns:SocketAppenderType" minOccurs="0" />
-         <element name="ScriptAppenderSelector" 
type="tns:ScriptAppenderSelectorType" minOccurs="0" />
-
-         <!-- undocumented appenders used in unit tests -->
-         <element name="AlwaysFail" type="tns:GenericAppenderType" 
minOccurs="0" />
-         <element name="Block" type="tns:GenericAppenderType" minOccurs="0" />
-         <element name="Blocking" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="Deadlock" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="Failover" minOccurs="0">
-            <complexType>
-               <complexContent>
-                  <extension base="tns:GenericAppenderType">
-                     <sequence>
-                        <element name="Failovers">
-                           <complexType>
-                              <sequence>
-                                 <any processContents="lax" />
-                              </sequence>
-                              <anyAttribute processContents="lax" />
-                           </complexType>
-                        </element>
-                     </sequence>
-                  </extension>
-               </complexContent>
-            </complexType>
-         </element>
-         <element name="FailOnce" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="Hanging" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="List" type="tns:GenericAppenderType" minOccurs="0" />
-      </sequence>
-   </complexType>
-
-   <complexType name="AbstractAppenderType" abstract="true">
-      <sequence>
-         <sequence>
-            <element name="Property" type="tns:PropertyType" minOccurs="0" 
maxOccurs="unbounded" />
-         </sequence>
-         <choice minOccurs="0">
-            <element name="Layout" type="tns:LayoutType" />
-            <element name="CsvParameterLayout" 
type="tns:JCsvParameterLayoutType" />
-            <element name="GelfLayout" type="tns:GelfLayoutType" />
-            <element name="HtmlLayout" type="tns:HtmlLayoutType" />
-            <element name="JsonLayout" type="tns:JsonLayoutType" />
-            <element name="MessageLayout" type="tns:MessageLayoutType" />
-            <element name="PatternLayout" type="tns:PatternLayoutType" />
-            <element name="XmlLayout" type="tns:XmlLayoutType" />
-            <!-- Deprecated -->
-            <element name="SerializedLayout">
-              <complexType/>
-            </element>
-         </choice>
-         <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-      </sequence>
-      <attribute name="name" type="string" use="required">
-         <annotation>
-            <documentation>The name of the appender.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="ignoreExceptions" type="tns:BooleanType" default="true">
-         <annotation>
-            <documentation>
-               The default is true, causing exceptions encountered while 
appending events to be internally logged and then ignored.
-               When set to false
-               exceptions will be propagated to the caller, instead.
-               You must set this to false when wrapping this Appender in a 
FailoverAppender.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="AppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="type" type="string" use="required" />
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="GenericAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="AsyncAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#ConsoleAppender -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <choice minOccurs="0">
-                  <element name="AppenderRef" type="tns:AppenderRefType" />
-                  <element name="appender-ref" type="tns:AppenderRefType" />
-               </choice>
-               <choice minOccurs="0">
-                  <element name="ArrayBlockingQueue">
-                     <complexType />
-                  </element>
-                  <element name="DisruptorBlockingQueue">
-                     <complexType />
-                  </element>
-                  <element name="JCToolsBlockingQueue">
-                     <complexType />
-                  </element>
-                  <element name="LinkedTransferQueue">
-                     <complexType />
-                  </element>
-               </choice>
-            </sequence>
-            <attribute name="blocking" type="tns:BooleanType" />
-            <attribute name="bufferSize" type="tns:IntegerType" />
-            <attribute name="error-ref" type="string" />
-            <attribute name="includeLocation" type="tns:BooleanType" />
-            <attribute name="shutdownTimeout" type="tns:IntegerType" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="ConsoleAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#ConsoleAppender -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="direct" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     Write directly to java.io.FileDescriptor and bypass 
java.lang.System.out/.err. Can give up to 10x performance boost when the
-                     output is redirected to file or other process. Cannot be 
used with Jansi on Windows. Cannot be used with follow.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="follow" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     Identifies whether the appender honors reassignments of 
System.out or System.err via System.setOut or System.setErr made after
-                     configuration. Note that the follow attribute cannot be 
used with Jansi on Windows. Cannot be used with direct.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="target">
-               <annotation>
-                  <documentation>Default is SYSTEM_OUT.</documentation>
-               </annotation>
-               <simpleType>
-                  <restriction base="string">
-                     <enumeration value="SYSTEM_ERR" />
-                     <enumeration value="SYSTEM_OUT" />
-                  </restriction>
-               </simpleType>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="FlumeAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="Agent" maxOccurs="unbounded">
-                  <complexType>
-                     <attribute name="host" type="string" />
-                     <attribute name="port" type="tns:IntegerType" />
-                  </complexType>
-               </element>
-               <element name="RFC5424Layout">
-                  <complexType>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="JeroMQAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="JMSAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="KafkaAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="key" type="string" />
-            <attribute name="retryCount" type="int" />
-            <attribute name="syncSend" type="boolean" />
-            <attribute name="sendEventTimestamp" type="boolean" />
-            <attribute name="topic" type="string" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RewriteAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <choice>
-                  <element name="MapRewritePolicy">
-                     <complexType>
-                        <sequence>
-                           <element name="KeyValuePair" 
type="tns:KeyValuePairType" maxOccurs="unbounded">
-                              <annotation>
-                                 <documentation>
-                                    One or more KeyValuePair elements that 
define the matching value for the key and the Level to evaluate when the
-                                    key
-                                    matches.
-                                 </documentation>
-                              </annotation>
-                           </element>
-                        </sequence>
-                     </complexType>
-                  </element>
-                  <element name="PropertiesRewritePolicy">
-                     <complexType>
-                        <sequence>
-                           <element name="Property" type="tns:PropertyType" 
maxOccurs="unbounded" />
-                        </sequence>
-                     </complexType>
-                  </element>
-               </choice>
-               <element name="AppenderRef" type="tns:AppenderRefType" 
minOccurs="0" />
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RoutingAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RoutingAppender -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="Script" minOccurs="0">
-                  <complexType mixed="true">
-                     <sequence minOccurs="0">
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="Routes">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="IdlePurgePolicy" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="SMTPAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="AbstractFileAppenderType" abstract="true">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="append" type="tns:BooleanType" default="true">
-               <annotation>
-                  <documentation>
-                     When true, records will be appended to the end of the 
file.
-                     When set to false, the file will be cleared before new 
records are
-                     written.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="advertise" type="tns:BooleanType" />
-            <attribute name="advertiseURI" type="string" />
-            <attribute name="fileName" type="string">
-               <annotation>
-                  <documentation>
-                     The name of the file to write to. If the file, or any of 
its parent directories, do not exist, they will be created.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="immediateFlush" type="tns:BooleanType" 
default="true">
-               <annotation>
-                  <documentation>
-                     When set to true, each write will be followed by a flush.
-                     This will guarantee that the data is passed to the 
operating system for writing;
-                     it does not guarantee that the data is actually written 
to a physical device
-                     such as a disk drive.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RandomAccessFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RandomAccessFileAppender
 -->
-      <complexContent>
-         <extension base="tns:AbstractFileAppenderType">
-            <attribute name="bufferedIO" type="tns:BooleanType" default="true">
-               <annotation>
-                  <documentation>
-                     When true, records will be written to a buffer and the 
data will be written to disk when the buffer is full or, if
-                     immediateFlush is set, when the record is written.
-                     File locking cannot be used with bufferedIO.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="bufferSize" type="tns:IntegerType" default="8192">
-               <annotation>
-                  <documentation>When bufferedIO is true, this is the buffer 
size, the default is 8192 bytes.</documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="FileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender -->
-      <complexContent>
-         <extension base="tns:RandomAccessFileAppenderType">
-            <attribute name="createOnDemand" type="tns:BooleanType" 
default="false">
-               <annotation>
-                  <documentation>
-                     The appender creates the file on-demand. The appender 
only creates the file when a log event passes all filters and is routed
-                     to this appender.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="filePermissions" type="string">
-               <annotation>
-                  <documentation>
-                     File attribute permissions in POSIX format to apply 
whenever the file is created.
-                     Underlying files system shall support POSIX
-                     file attribute view.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="fileOwner" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     File owner to define whenever the file is created.
-                     Underlying files system shall support POSIX file 
attribute view.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="fileGroup" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     File group to define whenever the file is created.
-                     Underlying files system shall support POSIX file 
attribute view.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MemoryMappedFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#MemoryMappedFileAppender
 -->
-      <complexContent>
-         <extension base="tns:AbstractFileAppenderType">
-            <attribute name="regionLength" type="tns:IntegerType">
-               <annotation>
-                  <documentation> The length of the mapped region, defaults to 
32 MB (32 * 1024 * 1024 bytes). This parameter must be a value between 256 and
-                     1,073,741,824 (1 GB or 2^30); values outside this range 
will be adjusted to the closest valid value. Log4j will round the specified 
value
-                     up to the nearest power of two.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RollingFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender 
-->
-      <complexContent>
-         <extension base="tns:FileAppenderType">
-            <sequence>
-               <group ref="tns:TriggeringPolicyChoiceGroup" minOccurs="0" />
-               <choice minOccurs="0">
-                  <element name="DefaultRolloverStrategy" 
type="tns:DefaultRolloverStrategyType" />
-                  <element name="DirectWriteRolloverStrategy" 
type="tns:DirectWriteRolloverStrategy" />
-               </choice>
-            </sequence>
-            <attribute name="filePattern" type="string" use="required">
-               <annotation>
-                  <documentation>
-                     The pattern of the file name of the archived log file.
-                     The format of the pattern is dependent on the 
RolloverPolicy that is
-                     used.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RollingRandomAccessFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender 
-->
-      <complexContent>
-         <extension base="tns:RollingFileAppenderType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="ScriptAppenderSelectorType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#ScriptAppenderSelector
 -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="Script" minOccurs="0">
-                  <complexType mixed="true">
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="AppenderSet" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="SocketAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender 
-->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="SocketOptions" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="Ssl" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    TriggeringPolicy types
-    
================================================================================================================================
-    -->
-   <group name="TriggeringPolicyChoiceGroup">
-      <choice>
-         <element name="Policies">
-            <complexType>
-               <group ref="tns:TriggeringPolicyChoiceGroup" minOccurs="0" 
maxOccurs="unbounded" />
-            </complexType>
-         </element>
-         <element name="CronTriggeringPolicy" 
type="tns:CronTriggeringPolicyType" />
-         <element name="OnStartupTriggeringPolicy" 
type="tns:OnStartupTriggeringPolicyType" />
-         <element name="SizeBasedTriggeringPolicy" 
type="tns:SizeBasedTriggeringPolicyType" />
-         <element name="TimeBasedTriggeringPolicy" 
type="tns:TimeBasedTriggeringPolicyType" />
-      </choice>
-   </group>
-
-   <complexType name="CronTriggeringPolicyType">
-      <attribute name="schedule" type="string">
-         <annotation>
-            <documentation>The cron expression. The expression is the same as 
what is allowed in the Quartz scheduler.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="evaluateOnStartup" type="tns:BooleanType">
-         <annotation>
-            <documentation>
-               On startup the cron expression will be evaluated against the 
file's last modification timestamp. If the cron expression indicates a
-               rollover should have occurred between that time and the current 
time the file will be immediately rolled over.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="OnStartupTriggeringPolicyType">
-      <attribute name="minSize" type="tns:IntegerType" default="1">
-         <annotation>
-            <documentation>
-               The minimum size the file must have to roll over. A size of 
zero will cause a roll over no matter what the file size is. The default
-               value is 1, which will prevent rolling over an empty file.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="SizeBasedTriggeringPolicyType">
-      <attribute name="size" type="string" use="required">
-         <annotation>
-            <documentation>
-               The size can be specified in bytes, with the suffix KB, MB or 
GB, for example 20MB.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="TimeBasedTriggeringPolicyType">
-      <attribute name="interval" type="tns:IntegerType" default="1">
-         <annotation>
-            <documentation>
-               How often a rollover should occur based on the most specific 
time unit in the date pattern.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="modulate" type="tns:BooleanType" default="false">
-         <annotation>
-            <documentation>
-               Indicates whether the interval should be adjusted to cause the 
next rollover to occur on the interval boundary.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="maxRandomDelay" type="tns:IntegerType" default="0">
-         <annotation>
-            <documentation>
-               Indicates the maximum number of seconds to randomly delay a 
rollover. By default, this is 0 which indicates no delay.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    RolloverStrategy types
-    
================================================================================================================================
-    -->
-   <complexType name="DefaultRolloverStrategyType">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-      </choice>
-      <attribute name="compressionLevel" type="tns:IntegerType">
-         <annotation>
-            <documentation>
-               Sets the compression level, 0-9, where 0 = none, 1 = best 
speed, through 9 = best compression. Only implemented for ZIP files.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="fileIndex" default="max">
-         <annotation>
-            <documentation>
-               If set to "max", files with a higher index will be newer than 
files with a smaller index.
-               If set to "min", file renaming and the
-               counter will follow the Fixed Window strategy described above.
-            </documentation>
-         </annotation>
-         <simpleType>
-            <restriction base="string">
-               <enumeration value="max" />
-               <enumeration value="nomax" />
-               <enumeration value="min" />
-            </restriction>
-         </simpleType>
-      </attribute>
-      <attribute name="max" type="tns:IntegerType" default="7">
-         <annotation>
-            <documentation>
-               The maximum value of the counter. Once this values is reached 
older archives will be deleted on subsequent rollovers.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="min" type="tns:IntegerType" default="1">
-         <annotation>
-            <documentation>The minimum value of the counter.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="stopCustomActionsOnError" type="tns:BooleanType" />
-      <attribute name="tempCompressedFilePattern" type="string">
-         <annotation>
-            <documentation>The pattern of the file name of the archived log 
file during compression.</documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="DirectWriteRolloverStrategy">
-      <sequence>
-         <any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-      </sequence>
-      <attribute name="compressionLevel" type="tns:IntegerType">
-         <annotation>
-            <documentation>
-               Sets the compression level, 0-9, where 0 = none, 1 = best 
speed, through 9 = best compression. Only implemented for ZIP files.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="maxFiles" type="tns:IntegerType" default="7">
-         <annotation>
-            <documentation>
-               The maximum number of files to allow in the time period 
matching the file pattern. If the number of files is exceeded the oldest file
-               will be deleted. If specified, the value must be greater than 
1. If the value is less than zero or omitted then the number of files will not 
be
-               limited.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="tempCompressedFilePattern" type="string">
-         <annotation>
-            <documentation>The pattern of the file name of the archived log 
file during compression.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="stopCustomActionsOnError" type="boolean">
-         <annotation>
-            <documentation>Defines whether to stop executing asynchronous 
actions if an error occurs.</documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    <Configuration><Loggers> type and related types
-    
================================================================================================================================
-    -->
-   <complexType name="LoggersType" mixed="true">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <element name="Root" type="tns:RootType" />
-         <element name="AsyncRoot" type="tns:AsyncRootType" />
-         <element name="Logger" type="tns:LoggerType" />
-         <element name="AsyncLogger" type="tns:AsyncLoggerType" />
-      </choice>
-   </complexType>
-
-   <complexType name="LoggerType">
-      <sequence>
-         <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-         <choice minOccurs="0" maxOccurs="unbounded">
-            <element name="Property" type="tns:PropertyType" />
-            <element name="AppenderRef" type="tns:AppenderRefType" />
-            <element name="appender-ref" type="tns:AppenderRefType" />
-         </choice>
-      </sequence>
-      <attribute name="additivity" type="tns:BooleanType" />
-      <attribute name="level" type="string" />
-      <attribute name="name" type="string" use="required" />
-      <attribute name="includeLocation" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="AsyncLoggerType">
-      <complexContent>
-         <extension base="tns:LoggerType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="RootType">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <element name="Property" type="tns:PropertyType" />
-         <element name="AppenderRef" type="tns:AppenderRefType" />
-         <element name="appender-ref" type="tns:AppenderRefType" />
-      </choice>
-      <attribute name="additivity" type="tns:BooleanType" />
-      <attribute name="level" type="string" />
-      <attribute name="includeLocation" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="AsyncRootType">
-      <complexContent>
-         <extension base="tns:RootType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="AppenderRefType">
-      <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-      <attribute name="level" type="string" />
-      <attribute name="ref" type="string" use="required" />
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Reusable Simple Types for Attributes
-    
================================================================================================================================
-    -->
-   <complexType name="KeyValuePairType">
-      <simpleContent>
-         <extension base="string">
-            <attribute name="key" type="string" use="required" />
-            <attribute name="value" type="string" use="required" />
-         </extension>
-      </simpleContent>
-   </complexType>
-
-   <complexType name="PropertyType">
-      <simpleContent>
-         <extension base="string">
-            <attribute name="name" type="string" use="required" />
-            <attribute name="value" type="string" />
-         </extension>
-      </simpleContent>
-   </complexType>
-
-   <simpleType name="BooleanType">
-      <annotation>
-         <documentation>Allow boolean values or variable place holders in the 
form of ${variablename}</documentation>
-      </annotation>
-      <restriction base="string">
-         <pattern value="(true|false|\$\{[^{}]+\})" />
-      </restriction>
-   </simpleType>
-
-   <simpleType name="IntegerType">
-      <annotation>
-         <documentation>Allow long values or variable place holders in the 
form of ${variablename}</documentation>
-      </annotation>
-      <restriction base="string">
-         <pattern value="-?([0-9]+|\$\{[^{}]+\})" />
-      </restriction>
-   </simpleType>
-
-</schema>
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlSchemaTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlSchemaTest.java
deleted file mode 100644
index 685f4bd7bc..0000000000
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/xml/XmlSchemaTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.core.config.xml;
-
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Stream;
-import javax.xml.XMLConstants;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-import javax.xml.validation.Validator;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.helpers.XMLFilterImpl;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-public class XmlSchemaTest {
-
-    private static final String TARGET_NAMESPACE = 
"http://logging.apache.org/log4j/2.0/config";;
-
-    private static final List<String> IGNORE_CONFIGS = Arrays.asList( //
-            "log4j2-arbiters.xml", // Arbiters violate XML schema as they can 
appear anywhere
-            "log4j2-environmentArbiters.xml",
-            "log4j2-scriptArbiters.xml",
-            "log4j2-systemPropertyArbiters.xml",
-            "log4j2-selectArbiters.xml",
-            "log4j-core-gctests/src/test/resources/gcFreeLogging.xml", // has 
2 <Pattern> tags defined
-            "legacy-plugins.xml", //
-            "logback", // logback configs
-            "log4j-xinclude", //
-            "log4j12", // log4j 1.x configs
-            "perf-CountingNoOpAppender.xml", // uses test-appender CountingNoOp
-            "reconfiguration-deadlock.xml", // uses test-appender 
ReconfigurationDeadlockTestAppender
-            "AsyncWaitStrategy", // uses AsyncWaitStrategyFactory (LOG4J2-3472)
-            "XmlConfigurationSecurity.xml", // used for testing XML parser; 
shouldn't be parseable in secure settings
-            "InvalidConfig.xml",
-            "InvalidXML.xml");
-
-    static Stream<Path> testXmlSchemaValidation() throws IOException {
-        return Files.list(Paths.get("src", "test", 
"resources")).filter(filePath -> {
-            final String fileName = filePath.getFileName().toString();
-            if (!fileName.endsWith(".xml")) return false;
-            for (final String ignore : IGNORE_CONFIGS) {
-                if (fileName.contains(ignore)) return false;
-            }
-            return true;
-        });
-    }
-
-    @ParameterizedTest
-    @MethodSource
-    public void testXmlSchemaValidation(final Path filePath) throws 
SAXException, IOException {
-        final SchemaFactory factory = 
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
-        final Schema schema = factory.newSchema(new 
StreamSource(getClass().getResourceAsStream("/Log4j-config.xsd")));
-        final Validator validator = schema.newValidator();
-
-        final XMLFilterImpl namespaceAdder = new 
XMLFilterImpl(XMLReaderFactory.createXMLReader()) {
-            @Override
-            public void startElement(
-                    final String namespace, final String localName, final 
String qName, final Attributes atts)
-                    throws SAXException {
-                super.startElement(TARGET_NAMESPACE, localName, qName, atts);
-            }
-        };
-
-        final InputSource source = new 
InputSource(filePath.toAbsolutePath().toString());
-        final SAXSource transformedSource = new SAXSource(namespaceAdder, 
source);
-        assertDoesNotThrow(() -> {
-            try {
-                validator.validate(transformedSource);
-            } catch (SAXParseException e) {
-                // Wrap the exception to capture the location
-                throw new RuntimeException(e.toString(), e);
-            }
-        });
-    }
-}
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index 6f6d2f1233..2eaf3d5429 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -62,7 +62,6 @@ public class XmlConfiguration extends AbstractConfiguration 
implements Reconfigu
 
     private static final String XINCLUDE_FIXUP_LANGUAGE = 
"http://apache.org/xml/features/xinclude/fixup-language";;
     private static final String XINCLUDE_FIXUP_BASE_URIS = 
"http://apache.org/xml/features/xinclude/fixup-base-uris";;
-    private static final String LOG4J_XSD = "Log4j-config.xsd";
 
     private final List<Status> status = new ArrayList<>();
     private Element rootElement;
@@ -142,7 +141,7 @@ public class XmlConfiguration extends AbstractConfiguration 
implements Reconfigu
             try (final InputStream is =
                     Loader.getResourceAsStream(schemaResource, 
XmlConfiguration.class.getClassLoader())) {
                 if (is != null) {
-                    final javax.xml.transform.Source src = new 
StreamSource(is, LOG4J_XSD);
+                    final javax.xml.transform.Source src = new 
StreamSource(is);
                     final SchemaFactory factory = 
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
                     Schema schema = null;
                     try {
diff --git a/log4j-core/src/main/resources/Log4j-config.xsd 
b/log4j-core/src/main/resources/Log4j-config.xsd
deleted file mode 100644
index a5ae2d28a5..0000000000
--- a/log4j-core/src/main/resources/Log4j-config.xsd
+++ /dev/null
@@ -1,1405 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<schema xmlns="http://www.w3.org/2001/XMLSchema";
-        xmlns:tns="http://logging.apache.org/log4j/2.0/config";
-        targetNamespace="http://logging.apache.org/log4j/2.0/config";
-        elementFormDefault="qualified">
-
-   <!--
-    
================================================================================================================================
-    <Configuration> root element
-    
================================================================================================================================
-    -->
-   <element name="Configuration">
-      <complexType>
-         <sequence>
-            <choice minOccurs="0">
-               <element name="AsyncWaitStrategyFactory">
-                  <complexType>
-                     <attribute name="class" type="string" use="required"/>
-                  </complexType>
-               </element>
-            </choice>
-            <choice minOccurs="0">
-               <element name="CustomLevels" type="tns:CustomLevelsType">
-                  <unique name="UniqueCustomLevelName">
-                     <selector xpath="tns:CustomLevel" />
-                     <field xpath="@name" />
-                  </unique>
-               </element>
-               <element name="CustomLevel" type="tns:CustomLevelType" />
-            </choice>
-            <element name="Properties" minOccurs="0">
-               <complexType>
-                  <sequence>
-                     <element name="Property" type="tns:PropertyType" 
minOccurs="0" maxOccurs="unbounded" />
-                  </sequence>
-               </complexType>
-               <unique name="UniquePropertyName">
-                  <selector xpath="tns:Property" />
-                  <field xpath="@name" />
-               </unique>
-            </element>
-
-            <element name="Scripts" minOccurs="0" maxOccurs="unbounded">
-               <complexType>
-                  <sequence>
-                     <element name="ScriptFile" minOccurs="0" 
maxOccurs="unbounded">
-                        <complexType>
-                           <attribute name="name" type="string" use="required" 
/>
-                           <attribute name="language" type="string" />
-                           <attribute name="path" type="string" use="required" 
/>
-                           <attribute name="charset" type="string" />
-                        </complexType>
-                     </element>
-                  </sequence>
-               </complexType>
-            </element>
-
-            <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-
-            <element name="Appenders" type="tns:AppendersType" minOccurs="0" />
-
-            <element name="Loggers" type="tns:LoggersType" minOccurs="0">
-               <unique name="UniqueLoggerName">
-                  <selector xpath="tns:Logger" />
-                  <field xpath="@name" />
-               </unique>
-            </element>
-         </sequence>
-
-         <attribute name="advertiser" type="string">
-            <annotation>
-               <documentation>The Advertiser plugin name which will be used to 
advertise individual FileAppender or SocketAppender configurations. The only
-                  Advertiser plugin provided is 'multicastdns".
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="dest" type="string">
-            <annotation>
-               <documentation>Either "err" for stderr, "out" for stdout, a 
file path, or a URL.</documentation>
-            </annotation>
-         </attribute>
-         <attribute name="monitorInterval" type="tns:IntegerType">
-            <annotation>
-               <documentation>The minimum amount of time, in seconds, that 
must elapse before the file configuration is checked for 
changes.</documentation>
-            </annotation>
-         </attribute>
-         <attribute name="name" type="string">
-            <annotation>
-               <documentation>The name of the configuration.</documentation>
-            </annotation>
-         </attribute>
-         <attribute name="packages" type="string">
-            <annotation>
-               <documentation>A comma separated list of package names to 
search for plugins. Plugins are only loaded once per classloader so changing 
this value
-                  may not have any effect upon reconfiguration.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="schema" type="string">
-            <annotation>
-               <documentation>Identifies the location for the classloader to 
located the XML Schema to use to validate the configuration. Only valid when 
strict
-                  is set to true. If not set no schema validation will take 
place.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="shutdownHook">
-            <annotation>
-               <documentation>Specifies whether or not Log4j should 
automatically shutdown when the JVM shuts down. The shutdown hook is enabled by 
default but
-                  may be disabled by setting this attribute to "disable".
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <pattern value="(|disable|\$\{[^{}]+\})" />
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="shutdownTimeout" type="tns:IntegerType" default="0">
-            <annotation>
-               <documentation>Specifies how many milliseconds appenders and 
background tasks will get to shutdown when the JVM shuts down. Default is zero 
which
-                  mean that each appender uses its default timeout, and don't 
wait for background tasks.
-               </documentation>
-            </annotation>
-         </attribute>
-         <attribute name="status">
-            <annotation>
-               <documentation>The level of internal Log4j events that should 
be logged to the console. Valid values for this attribute are "trace", "debug",
-                  "info", "warn", "error" and "fatal".
-               </documentation>
-            </annotation>
-            <simpleType>
-               <restriction base="string">
-                  <pattern
-                     
value="([Tt][Rr][Aa][Cc][Ee]|[Dd][Ee][Bb][Uu][Gg]|[Ii][Nn][Ff][Oo]|[Ww][Aa][Rr][Nn]|[Ee][Rr][Rr][Oo][Rr]|[Ff][Aa][Tt][Aa][Ll]|[Oo][Ff][Ff]|\$\{[^{}]+\})"
 />
-               </restriction>
-            </simpleType>
-         </attribute>
-         <attribute name="strict" type="tns:BooleanType">
-            <annotation>
-               <documentation>Enables the use of the strict XML format. Not 
supported in JSON configurations.</documentation>
-            </annotation>
-         </attribute>
-      </complexType>
-   </element>
-
-   <!--
-    
================================================================================================================================
-    <Configuration><CustomLevels> type and related types
-    
================================================================================================================================
-    -->
-   <complexType name="CustomLevelsType">
-      <sequence>
-         <element name="CustomLevel" type="tns:CustomLevelType" minOccurs="0" 
maxOccurs="unbounded" />
-      </sequence>
-   </complexType>
-
-   <complexType name="CustomLevelType">
-      <attribute name="name" type="string" use="required" />
-      <attribute name="intLevel" type="tns:IntegerType" use="required" />
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Filter types
-    
================================================================================================================================
-    -->
-   <group name="FilterChoiceGroup">
-      <choice>
-         <element name="Filters">
-            <complexType>
-               <group ref="tns:FilterChoiceGroup" minOccurs="0" 
maxOccurs="unbounded" />
-            </complexType>
-         </element>
-         <element name="Filter" type="tns:FilterType" minOccurs="0" />
-         <element name="BurstFilter" type="tns:BurstFilterType" minOccurs="0" 
/>
-         <element name="ContextMapFilter" type="tns:MapFilterType" 
minOccurs="0" />
-         <element name="DynamicThresholdFilter" 
type="tns:DynamicThresholdFilterType" minOccurs="0" />
-         <element name="MapFilter" type="tns:MapFilterType" minOccurs="0" />
-         <element name="MarkerFilter" type="tns:MarkerFilterType" 
minOccurs="0" />
-         <element name="MutableThreadContextMapFilter" 
type="tns:MutableThreadContextMapFilterType" minOccurs="0" />
-         <element name="NoMarkerFilter" type="tns:NoMarkerFilterType" 
minOccurs="0" />
-         <element name="RegexFilter" type="tns:RegexFilterType" minOccurs="0" 
/>
-         <element name="ScriptFilter" type="tns:ScriptFilterType" 
minOccurs="0" />
-         <element name="StructuredDataFilter" 
type="tns:StructuredDataFilterType" minOccurs="0" />
-         <element name="ThreadContextMapFilter" type="tns:MapFilterType" 
minOccurs="0" />
-         <element name="ThresholdFilter" type="tns:ThresholdFilterType" 
minOccurs="0" />
-      </choice>
-   </group>
-
-   <complexType name="AbstractFilterType" abstract="true">
-      <attribute name="onMatch" type="tns:FilterActionType" default="NEUTRAL">
-         <annotation>
-            <documentation>Action to take when the filter matches. May be 
ACCEPT, DENY or NEUTRAL.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="onMismatch" type="tns:FilterActionType" default="DENY">
-         <annotation>
-            <documentation>Action to take when the filter does not match. May 
be ACCEPT, DENY or NEUTRAL.</documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <simpleType name="FilterActionType">
-      <restriction base="string">
-         <enumeration value="ACCEPT" />
-         <enumeration value="accept" />
-         <enumeration value="DENY" />
-         <enumeration value="deny" />
-         <enumeration value="NEUTRAL" />
-         <enumeration value="neutral" />
-      </restriction>
-   </simpleType>
-
-   <complexType name="AbstractFilterTypeWithKeyValuePairs" abstract="true">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <sequence>
-               <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" maxOccurs="unbounded">
-                  <annotation>
-                     <documentation>
-                        One or more KeyValuePair elements that define the 
matching value for the key and the Level to evaluate when the key matches.
-                     </documentation>
-                  </annotation>
-               </element>
-            </sequence>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="BurstFilterType" mixed="true">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="rate" type="string">
-               <annotation>
-                  <documentation>The average number of events per second to 
allow.</documentation>
-               </annotation>
-            </attribute>
-            <attribute name="maxBurst" type="tns:IntegerType">
-               <annotation>
-                  <documentation>The maximum number of events that can occur 
before events are filtered for exceeding the average rate. The default is 10 
times
-                     the rate.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="level" type="string" use="required">
-               <annotation>
-                  <documentation>Level of messages to be filtered. Anything at 
or below this level will be filtered out if maxBurst has been exceeded. The
-                     default is WARN meaning any messages that are higher than 
warn will be logged regardless of the size of a burst.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="FilterType" mixed="true">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <sequence>
-               <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" />
-            </sequence>
-            <attribute name="type" type="string" use="required">
-               <annotation>
-                  <documentation>The filter type, see 
https://logging.apache.org/log4j/2.x/manual/filters.html</documentation>
-               </annotation>
-            </attribute>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="DynamicThresholdFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterTypeWithKeyValuePairs">
-            <attribute name="key" type="string" use="required">
-               <annotation>
-                  <documentation>The name of the item in the ThreadContext Map 
to compare.</documentation>
-               </annotation>
-            </attribute>
-            <attribute name="defaultThreshold" type="string" use="required">
-               <annotation>
-                  <documentation>
-                     Level of messages to be filtered. The default threshold 
only applies if the log event contains the specified ThreadContext Map
-                     item and its value does not match any key in the 
key/value pairs.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MutableThreadContextMapFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="configLocation" type="string">
-               <annotation>
-                  <documentation>
-                     The location of the configuration for the filter.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="pollInterval" type="int">
-               <annotation>
-                  <documentation>
-                     The frequency in seconds that the configuration file 
should be checked for modifications.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="operator" type="string">
-               <annotation>
-                  <documentation>
-                     If the operator is "or" then a match by any one of the 
key/value pairs will be considered to be a match, otherwise all the
-                     key/value pairs must match.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MapFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterTypeWithKeyValuePairs">
-            <attribute name="operator" type="string">
-               <annotation>
-                  <documentation>
-                     If the operator is "or" then a match by any one of the 
key/value pairs will be considered to be a match, otherwise all the
-                     key/value pairs must match.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MarkerFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="marker" type="string" use="required" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="NoMarkerFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="RegexFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="regex" type="string" use="required">
-               <annotation>
-                  <documentation>The regular expression.</documentation>
-               </annotation>
-            </attribute>
-            <attribute name="useRawMsg" type="tns:BooleanType" default="false">
-               <annotation>
-                  <documentation>If true the unformatted message will be used, 
otherwise the formatted message will be used.</documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="ScriptFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <choice>
-               <element name="Script">
-                  <complexType mixed="true">
-                     <attribute name="name" type="string" />
-                     <attribute name="language" type="string" />
-                  </complexType>
-               </element>
-               <element name="ScriptFile" />
-               <element name="ScriptRef" />
-            </choice>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="StructuredDataFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterTypeWithKeyValuePairs">
-            <attribute name="operator" type="string">
-               <annotation>
-                  <documentation>
-                     If the operator is "or" then a match by any one of the 
key/value pairs will be considered to be a match, otherwise all the
-                     key/value pairs must match.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="ThresholdFilterType">
-      <complexContent>
-         <extension base="tns:AbstractFilterType">
-            <attribute name="level" type="string" use="required">
-               <annotation>
-                  <documentation>A valid Level name to match 
on.</documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Layout types
-    
================================================================================================================================
-    -->
-   <complexType name="LayoutType">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-      </choice>
-      <attribute name="type" type="string" use="required" />
-      <anyAttribute processContents="lax" />
-   </complexType>
-
-   <complexType name="MessageLayoutType">
-   </complexType>
-
-   <complexType name="PatternLayoutType">
-       <!-- 
https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout -->
-      <sequence>
-         <choice minOccurs="0">
-            <element name="LevelPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="MarkerPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="ScriptPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-         </choice>
-         <element name="Replace" minOccurs="0">
-            <complexType>
-               <attribute name="regex" type="string" />
-               <attribute name="replacement" type="string" />
-            </complexType>
-         </element>
-         <element name="Pattern" type="string" minOccurs="0" />
-      </sequence>
-      <attribute name="alwaysWriteExceptions" type="tns:BooleanType" 
default="true">
-         <annotation>
-            <documentation>If true exceptions are always written even if the 
pattern contains no exception conversions.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="charset" type="string">
-         <annotation>
-            <documentation>The character set to use when converting the syslog 
String to a byte array.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="disableAnsi" type="tns:BooleanType" default="false">
-         <annotation>
-            <documentation>If true, do not output ANSI escape 
codes.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="footer" type="string">
-         <annotation>
-            <documentation>Footer string to include at the bottom of each log 
file.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="header" type="string">
-         <annotation>
-            <documentation>Header string to include at the top of each log 
file.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="noConsoleNoAnsi" type="tns:BooleanType" default="false">
-         <annotation>
-            <documentation>If true and System.console() is null, do not output 
ANSI escape codes.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="pattern" type="string" />
-   </complexType>
-
-   <complexType name="HtmlLayoutType">
-      <attribute name="charset" type="string" />
-      <attribute name="contentType" type="string" />
-      <attribute name="locationInfo" type="tns:BooleanType" />
-      <attribute name="title" type="string" />
-      <attribute name="fontName" type="string" />
-      <attribute name="fontSize" type="string" />
-   </complexType>
-
-   <complexType name="AbstractJsonLayoutType">
-      <sequence>
-         <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" maxOccurs="unbounded">
-            <annotation>
-               <documentation>
-                  One or more KeyValuePair elements that define custom field 
in the output.
-               </documentation>
-            </annotation>
-         </element>
-      </sequence>
-      <attribute name="charset" type="string" />
-      <attribute name="complete" type="tns:BooleanType" />
-      <attribute name="compact" type="tns:BooleanType" />
-      <attribute name="eventEol" type="tns:BooleanType" />
-      <attribute name="endOfLine" type="string" />
-      <attribute name="includeNullDelimiter" type="tns:BooleanType" />
-      <attribute name="includeStacktrace" type="tns:BooleanType" />
-      <attribute name="locationInfo" type="tns:BooleanType" />
-      <attribute name="properties" type="tns:BooleanType" />
-      <attribute name="stacktraceAsString" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="JCsvParameterLayoutType">
-      <complexContent>
-         <extension base="tns:AbstractJsonLayoutType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="GelfLayoutType">
-      <sequence minOccurs="0">
-         <choice minOccurs="0">
-            <element name="LevelPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="MarkerPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="ScriptPatternSelector">
-               <complexType>
-                  <sequence>
-                     <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                  </sequence>
-                  <anyAttribute processContents="lax" />
-               </complexType>
-            </element>
-            <element name="MessagePattern" type="string" minOccurs="0" />
-         </choice>
-         <element name="KeyValuePair" type="tns:KeyValuePairType" 
minOccurs="0" maxOccurs="unbounded">
-            <annotation>
-               <documentation>
-                  One or more KeyValuePair elements that define custom field 
in the output.
-               </documentation>
-            </annotation>
-         </element>
-      </sequence>
-      <attribute name="host" type="string" />
-      <attribute name="compressionType">
-         <simpleType>
-            <restriction base="string">
-               <enumeration value="GZIP" />
-               <enumeration value="ZLIB" />
-               <enumeration value="OFF" />
-            </restriction>
-         </simpleType>
-      </attribute>
-      <attribute name="compressionThreshold" type="tns:IntegerType" />
-      <attribute name="includeNullDelimiter" type="tns:BooleanType" />
-      <attribute name="includeStacktrace" type="tns:BooleanType" />
-      <attribute name="includeThreadContext" type="tns:BooleanType" />
-      <attribute name="messagePattern" type="string" />
-      <attribute name="threadContextExcludes" type="string" />
-      <attribute name="threadContextIncludes" type="string" />
-      <attribute name="threadContextPrefix" type="string" />
-      <attribute name="mapMessageExcludes" type="string" />
-      <attribute name="mapMessageIncludes" type="string" />
-      <attribute name="mapPrefix" type="string" />
-      <attribute name="omitEmptyFields" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="JsonLayoutType">
-      <complexContent>
-         <extension base="tns:AbstractJsonLayoutType">
-            <attribute name="propertiesAsList" type="tns:BooleanType" />
-            <attribute name="includeTimeMillis" type="tns:BooleanType" />
-            <attribute name="objectMessageAsJsonObject" type="tns:BooleanType" 
/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="XmlLayoutType">
-      <complexContent>
-         <extension base="tns:AbstractJsonLayoutType" />
-      </complexContent>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Appender types
-    
================================================================================================================================
-    -->
-   <complexType name="AppendersType">
-      <sequence minOccurs="0" maxOccurs="unbounded">
-         <element name="Appender" type="tns:AppenderType" minOccurs="0" />
-         <element name="Async" type="tns:AsyncAppenderType" minOccurs="0" />
-         <element name="Console" type="tns:ConsoleAppenderType" minOccurs="0" 
/>
-         <element name="Flume" type="tns:FlumeAppenderType" minOccurs="0" />
-         <element name="JeroMQ" type="tns:JeroMQAppenderType" minOccurs="0" />
-         <element name="JMS" type="tns:JMSAppenderType" minOccurs="0" />
-         <element name="JMSQueue" type="tns:JMSAppenderType" minOccurs="0" />
-         <element name="JMSTopic" type="tns:JMSAppenderType" minOccurs="0" />
-         <element name="Kafka" type="tns:KafkaAppenderType" minOccurs="0" />
-         <element name="Rewrite" type="tns:RewriteAppenderType" minOccurs="0" 
/>
-         <element name="Routing" type="tns:RoutingAppenderType" minOccurs="0" 
/>
-         <element name="SMTP" type="tns:SMTPAppenderType" minOccurs="0" />
-         <element name="File" type="tns:FileAppenderType" minOccurs="0" />
-         <element name="MemoryMappedFile" 
type="tns:MemoryMappedFileAppenderType" minOccurs="0" />
-         <element name="RandomAccessFile" 
type="tns:RandomAccessFileAppenderType" minOccurs="0" />
-         <element name="RollingFile" type="tns:RollingFileAppenderType" 
minOccurs="0" />
-         <element name="RollingRandomAccessFile" 
type="tns:RollingRandomAccessFileAppenderType" minOccurs="0" />
-         <element name="Socket" type="tns:SocketAppenderType" minOccurs="0" />
-         <element name="ScriptAppenderSelector" 
type="tns:ScriptAppenderSelectorType" minOccurs="0" />
-
-         <!-- undocumented appenders used in unit tests -->
-         <element name="AlwaysFail" type="tns:GenericAppenderType" 
minOccurs="0" />
-         <element name="Block" type="tns:GenericAppenderType" minOccurs="0" />
-         <element name="Blocking" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="Deadlock" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="Failover" minOccurs="0">
-            <complexType>
-               <complexContent>
-                  <extension base="tns:GenericAppenderType">
-                     <sequence>
-                        <element name="Failovers">
-                           <complexType>
-                              <sequence>
-                                 <any processContents="lax" />
-                              </sequence>
-                              <anyAttribute processContents="lax" />
-                           </complexType>
-                        </element>
-                     </sequence>
-                  </extension>
-               </complexContent>
-            </complexType>
-         </element>
-         <element name="FailOnce" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="Hanging" type="tns:GenericAppenderType" minOccurs="0" 
/>
-         <element name="List" type="tns:GenericAppenderType" minOccurs="0" />
-      </sequence>
-   </complexType>
-
-   <complexType name="AbstractAppenderType" abstract="true">
-      <sequence>
-         <sequence>
-            <element name="Property" type="tns:PropertyType" minOccurs="0" 
maxOccurs="unbounded" />
-         </sequence>
-         <choice minOccurs="0">
-            <element name="Layout" type="tns:LayoutType" />
-            <element name="CsvParameterLayout" 
type="tns:JCsvParameterLayoutType" />
-            <element name="GelfLayout" type="tns:GelfLayoutType" />
-            <element name="HtmlLayout" type="tns:HtmlLayoutType" />
-            <element name="JsonLayout" type="tns:JsonLayoutType" />
-            <element name="MessageLayout" type="tns:MessageLayoutType" />
-            <element name="PatternLayout" type="tns:PatternLayoutType" />
-            <element name="XmlLayout" type="tns:XmlLayoutType" />
-            <!-- Deprecated -->
-            <element name="SerializedLayout">
-              <complexType/>
-            </element>
-         </choice>
-         <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-      </sequence>
-      <attribute name="name" type="string" use="required">
-         <annotation>
-            <documentation>The name of the appender.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="ignoreExceptions" type="tns:BooleanType" default="true">
-         <annotation>
-            <documentation>
-               The default is true, causing exceptions encountered while 
appending events to be internally logged and then ignored.
-               When set to false
-               exceptions will be propagated to the caller, instead.
-               You must set this to false when wrapping this Appender in a 
FailoverAppender.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="AppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="type" type="string" use="required" />
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="GenericAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="AsyncAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#ConsoleAppender -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <choice minOccurs="0">
-                  <element name="AppenderRef" type="tns:AppenderRefType" />
-                  <element name="appender-ref" type="tns:AppenderRefType" />
-               </choice>
-               <choice minOccurs="0">
-                  <element name="ArrayBlockingQueue">
-                     <complexType />
-                  </element>
-                  <element name="DisruptorBlockingQueue">
-                     <complexType />
-                  </element>
-                  <element name="JCToolsBlockingQueue">
-                     <complexType />
-                  </element>
-                  <element name="LinkedTransferQueue">
-                     <complexType />
-                  </element>
-               </choice>
-            </sequence>
-            <attribute name="blocking" type="tns:BooleanType" />
-            <attribute name="bufferSize" type="tns:IntegerType" />
-            <attribute name="error-ref" type="string" />
-            <attribute name="includeLocation" type="tns:BooleanType" />
-            <attribute name="shutdownTimeout" type="tns:IntegerType" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="ConsoleAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#ConsoleAppender -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="direct" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     Write directly to java.io.FileDescriptor and bypass 
java.lang.System.out/.err. Can give up to 10x performance boost when the
-                     output is redirected to file or other process. Cannot be 
used with Jansi on Windows. Cannot be used with follow.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="follow" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     Identifies whether the appender honors reassignments of 
System.out or System.err via System.setOut or System.setErr made after
-                     configuration. Note that the follow attribute cannot be 
used with Jansi on Windows. Cannot be used with direct.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="target">
-               <annotation>
-                  <documentation>Default is SYSTEM_OUT.</documentation>
-               </annotation>
-               <simpleType>
-                  <restriction base="string">
-                     <enumeration value="SYSTEM_ERR" />
-                     <enumeration value="SYSTEM_OUT" />
-                  </restriction>
-               </simpleType>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="FlumeAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="Agent" maxOccurs="unbounded">
-                  <complexType>
-                     <attribute name="host" type="string" />
-                     <attribute name="port" type="tns:IntegerType" />
-                  </complexType>
-               </element>
-               <element name="RFC5424Layout">
-                  <complexType>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="JeroMQAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="JMSAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="KafkaAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="key" type="string" />
-            <attribute name="retryCount" type="int" />
-            <attribute name="syncSend" type="boolean" />
-            <attribute name="sendEventTimestamp" type="boolean" />
-            <attribute name="topic" type="string" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RewriteAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <choice>
-                  <element name="MapRewritePolicy">
-                     <complexType>
-                        <sequence>
-                           <element name="KeyValuePair" 
type="tns:KeyValuePairType" maxOccurs="unbounded">
-                              <annotation>
-                                 <documentation>
-                                    One or more KeyValuePair elements that 
define the matching value for the key and the Level to evaluate when the
-                                    key
-                                    matches.
-                                 </documentation>
-                              </annotation>
-                           </element>
-                        </sequence>
-                     </complexType>
-                  </element>
-                  <element name="PropertiesRewritePolicy">
-                     <complexType>
-                        <sequence>
-                           <element name="Property" type="tns:PropertyType" 
maxOccurs="unbounded" />
-                        </sequence>
-                     </complexType>
-                  </element>
-               </choice>
-               <element name="AppenderRef" type="tns:AppenderRefType" 
minOccurs="0" />
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RoutingAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RoutingAppender -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="Script" minOccurs="0">
-                  <complexType mixed="true">
-                     <sequence minOccurs="0">
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="Routes">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="IdlePurgePolicy" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="SMTPAppenderType">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="AbstractFileAppenderType" abstract="true">
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <attribute name="append" type="tns:BooleanType" default="true">
-               <annotation>
-                  <documentation>
-                     When true, records will be appended to the end of the 
file.
-                     When set to false, the file will be cleared before new 
records are
-                     written.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="advertise" type="tns:BooleanType" />
-            <attribute name="advertiseURI" type="string" />
-            <attribute name="fileName" type="string">
-               <annotation>
-                  <documentation>
-                     The name of the file to write to. If the file, or any of 
its parent directories, do not exist, they will be created.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="immediateFlush" type="tns:BooleanType" 
default="true">
-               <annotation>
-                  <documentation>
-                     When set to true, each write will be followed by a flush.
-                     This will guarantee that the data is passed to the 
operating system for writing;
-                     it does not guarantee that the data is actually written 
to a physical device
-                     such as a disk drive.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RandomAccessFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RandomAccessFileAppender
 -->
-      <complexContent>
-         <extension base="tns:AbstractFileAppenderType">
-            <attribute name="bufferedIO" type="tns:BooleanType" default="true">
-               <annotation>
-                  <documentation>
-                     When true, records will be written to a buffer and the 
data will be written to disk when the buffer is full or, if
-                     immediateFlush is set, when the record is written.
-                     File locking cannot be used with bufferedIO.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="bufferSize" type="tns:IntegerType" default="8192">
-               <annotation>
-                  <documentation>When bufferedIO is true, this is the buffer 
size, the default is 8192 bytes.</documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="FileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender -->
-      <complexContent>
-         <extension base="tns:RandomAccessFileAppenderType">
-            <attribute name="createOnDemand" type="tns:BooleanType" 
default="false">
-               <annotation>
-                  <documentation>
-                     The appender creates the file on-demand. The appender 
only creates the file when a log event passes all filters and is routed
-                     to this appender.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="filePermissions" type="string">
-               <annotation>
-                  <documentation>
-                     File attribute permissions in POSIX format to apply 
whenever the file is created.
-                     Underlying files system shall support POSIX
-                     file attribute view.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="fileOwner" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     File owner to define whenever the file is created.
-                     Underlying files system shall support POSIX file 
attribute view.
-                  </documentation>
-               </annotation>
-            </attribute>
-            <attribute name="fileGroup" type="tns:BooleanType">
-               <annotation>
-                  <documentation>
-                     File group to define whenever the file is created.
-                     Underlying files system shall support POSIX file 
attribute view.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="MemoryMappedFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#MemoryMappedFileAppender
 -->
-      <complexContent>
-         <extension base="tns:AbstractFileAppenderType">
-            <attribute name="regionLength" type="tns:IntegerType">
-               <annotation>
-                  <documentation> The length of the mapped region, defaults to 
32 MB (32 * 1024 * 1024 bytes). This parameter must be a value between 256 and
-                     1,073,741,824 (1 GB or 2^30); values outside this range 
will be adjusted to the closest valid value. Log4j will round the specified 
value
-                     up to the nearest power of two.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RollingFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender 
-->
-      <complexContent>
-         <extension base="tns:FileAppenderType">
-            <sequence>
-               <group ref="tns:TriggeringPolicyChoiceGroup" minOccurs="0" />
-               <choice minOccurs="0">
-                  <element name="DefaultRolloverStrategy" 
type="tns:DefaultRolloverStrategyType" />
-                  <element name="DirectWriteRolloverStrategy" 
type="tns:DirectWriteRolloverStrategy" />
-               </choice>
-            </sequence>
-            <attribute name="filePattern" type="string" use="required">
-               <annotation>
-                  <documentation>
-                     The pattern of the file name of the archived log file.
-                     The format of the pattern is dependent on the 
RolloverPolicy that is
-                     used.
-                  </documentation>
-               </annotation>
-            </attribute>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="RollingRandomAccessFileAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender 
-->
-      <complexContent>
-         <extension base="tns:RollingFileAppenderType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="ScriptAppenderSelectorType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#ScriptAppenderSelector
 -->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="Script" minOccurs="0">
-                  <complexType mixed="true">
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="AppenderSet" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <complexType name="SocketAppenderType">
-      <!-- 
https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender 
-->
-      <complexContent>
-         <extension base="tns:AbstractAppenderType">
-            <sequence>
-               <element name="SocketOptions" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-               <element name="Ssl" minOccurs="0">
-                  <complexType>
-                     <sequence>
-                        <any processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
-                     </sequence>
-                     <anyAttribute processContents="lax" />
-                  </complexType>
-               </element>
-            </sequence>
-            <anyAttribute processContents="lax" />
-         </extension>
-      </complexContent>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    TriggeringPolicy types
-    
================================================================================================================================
-    -->
-   <group name="TriggeringPolicyChoiceGroup">
-      <choice>
-         <element name="Policies">
-            <complexType>
-               <group ref="tns:TriggeringPolicyChoiceGroup" minOccurs="0" 
maxOccurs="unbounded" />
-            </complexType>
-         </element>
-         <element name="CronTriggeringPolicy" 
type="tns:CronTriggeringPolicyType" />
-         <element name="OnStartupTriggeringPolicy" 
type="tns:OnStartupTriggeringPolicyType" />
-         <element name="SizeBasedTriggeringPolicy" 
type="tns:SizeBasedTriggeringPolicyType" />
-         <element name="TimeBasedTriggeringPolicy" 
type="tns:TimeBasedTriggeringPolicyType" />
-      </choice>
-   </group>
-
-   <complexType name="CronTriggeringPolicyType">
-      <attribute name="schedule" type="string">
-         <annotation>
-            <documentation>The cron expression. The expression is the same as 
what is allowed in the Quartz scheduler.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="evaluateOnStartup" type="tns:BooleanType">
-         <annotation>
-            <documentation>
-               On startup the cron expression will be evaluated against the 
file's last modification timestamp. If the cron expression indicates a
-               rollover should have occurred between that time and the current 
time the file will be immediately rolled over.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="OnStartupTriggeringPolicyType">
-      <attribute name="minSize" type="tns:IntegerType" default="1">
-         <annotation>
-            <documentation>
-               The minimum size the file must have to roll over. A size of 
zero will cause a roll over no matter what the file size is. The default
-               value is 1, which will prevent rolling over an empty file.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="SizeBasedTriggeringPolicyType">
-      <attribute name="size" type="string" use="required">
-         <annotation>
-            <documentation>
-               The size can be specified in bytes, with the suffix KB, MB or 
GB, for example 20MB.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="TimeBasedTriggeringPolicyType">
-      <attribute name="interval" type="tns:IntegerType" default="1">
-         <annotation>
-            <documentation>
-               How often a rollover should occur based on the most specific 
time unit in the date pattern.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="modulate" type="tns:BooleanType" default="false">
-         <annotation>
-            <documentation>
-               Indicates whether the interval should be adjusted to cause the 
next rollover to occur on the interval boundary.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="maxRandomDelay" type="tns:IntegerType" default="0">
-         <annotation>
-            <documentation>
-               Indicates the maximum number of seconds to randomly delay a 
rollover. By default, this is 0 which indicates no delay.
-            </documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    RolloverStrategy types
-    
================================================================================================================================
-    -->
-   <complexType name="DefaultRolloverStrategyType">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-      </choice>
-      <attribute name="compressionLevel" type="tns:IntegerType">
-         <annotation>
-            <documentation>
-               Sets the compression level, 0-9, where 0 = none, 1 = best 
speed, through 9 = best compression. Only implemented for ZIP files.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="fileIndex" default="max">
-         <annotation>
-            <documentation>
-               If set to "max", files with a higher index will be newer than 
files with a smaller index.
-               If set to "min", file renaming and the
-               counter will follow the Fixed Window strategy described above.
-            </documentation>
-         </annotation>
-         <simpleType>
-            <restriction base="string">
-               <enumeration value="max" />
-               <enumeration value="nomax" />
-               <enumeration value="min" />
-            </restriction>
-         </simpleType>
-      </attribute>
-      <attribute name="max" type="tns:IntegerType" default="7">
-         <annotation>
-            <documentation>
-               The maximum value of the counter. Once this values is reached 
older archives will be deleted on subsequent rollovers.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="min" type="tns:IntegerType" default="1">
-         <annotation>
-            <documentation>The minimum value of the counter.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="stopCustomActionsOnError" type="tns:BooleanType" />
-      <attribute name="tempCompressedFilePattern" type="string">
-         <annotation>
-            <documentation>The pattern of the file name of the archived log 
file during compression.</documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-   <complexType name="DirectWriteRolloverStrategy">
-      <sequence>
-         <any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
-      </sequence>
-      <attribute name="compressionLevel" type="tns:IntegerType">
-         <annotation>
-            <documentation>
-               Sets the compression level, 0-9, where 0 = none, 1 = best 
speed, through 9 = best compression. Only implemented for ZIP files.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="maxFiles" type="tns:IntegerType" default="7">
-         <annotation>
-            <documentation>
-               The maximum number of files to allow in the time period 
matching the file pattern. If the number of files is exceeded the oldest file
-               will be deleted. If specified, the value must be greater than 
1. If the value is less than zero or omitted then the number of files will not 
be
-               limited.
-            </documentation>
-         </annotation>
-      </attribute>
-      <attribute name="tempCompressedFilePattern" type="string">
-         <annotation>
-            <documentation>The pattern of the file name of the archived log 
file during compression.</documentation>
-         </annotation>
-      </attribute>
-      <attribute name="stopCustomActionsOnError" type="boolean">
-         <annotation>
-            <documentation>Defines whether to stop executing asynchronous 
actions if an error occurs.</documentation>
-         </annotation>
-      </attribute>
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    <Configuration><Loggers> type and related types
-    
================================================================================================================================
-    -->
-   <complexType name="LoggersType" mixed="true">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <element name="Root" type="tns:RootType" />
-         <element name="AsyncRoot" type="tns:AsyncRootType" />
-         <element name="Logger" type="tns:LoggerType" />
-         <element name="AsyncLogger" type="tns:AsyncLoggerType" />
-      </choice>
-   </complexType>
-
-   <complexType name="LoggerType">
-      <sequence>
-         <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-         <choice minOccurs="0" maxOccurs="unbounded">
-            <element name="Property" type="tns:PropertyType" />
-            <element name="AppenderRef" type="tns:AppenderRefType" />
-            <element name="appender-ref" type="tns:AppenderRefType" />
-         </choice>
-      </sequence>
-      <attribute name="additivity" type="tns:BooleanType" />
-      <attribute name="level" type="string" />
-      <attribute name="name" type="string" use="required" />
-      <attribute name="includeLocation" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="AsyncLoggerType">
-      <complexContent>
-         <extension base="tns:LoggerType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="RootType">
-      <choice minOccurs="0" maxOccurs="unbounded">
-         <element name="Property" type="tns:PropertyType" />
-         <element name="AppenderRef" type="tns:AppenderRefType" />
-         <element name="appender-ref" type="tns:AppenderRefType" />
-      </choice>
-      <attribute name="additivity" type="tns:BooleanType" />
-      <attribute name="level" type="string" />
-      <attribute name="includeLocation" type="tns:BooleanType" />
-   </complexType>
-
-   <complexType name="AsyncRootType">
-      <complexContent>
-         <extension base="tns:RootType" />
-      </complexContent>
-   </complexType>
-
-   <complexType name="AppenderRefType">
-      <group ref="tns:FilterChoiceGroup" minOccurs="0" />
-      <attribute name="level" type="string" />
-      <attribute name="ref" type="string" use="required" />
-   </complexType>
-
-
-   <!--
-    
================================================================================================================================
-    Reusable Simple Types for Attributes
-    
================================================================================================================================
-    -->
-   <complexType name="KeyValuePairType">
-      <simpleContent>
-         <extension base="string">
-            <attribute name="key" type="string" use="required" />
-            <attribute name="value" type="string" use="required" />
-         </extension>
-      </simpleContent>
-   </complexType>
-
-   <complexType name="PropertyType">
-      <simpleContent>
-         <extension base="string">
-            <attribute name="name" type="string" use="required" />
-            <attribute name="value" type="string" />
-         </extension>
-      </simpleContent>
-   </complexType>
-
-   <simpleType name="BooleanType">
-      <annotation>
-         <documentation>Allow boolean values or variable place holders in the 
form of ${variablename}</documentation>
-      </annotation>
-      <restriction base="string">
-         <pattern value="(true|false|\$\{[^{}]+\})" />
-      </restriction>
-   </simpleType>
-
-   <simpleType name="IntegerType">
-      <annotation>
-         <documentation>Allow long values or variable place holders in the 
form of ${variablename}</documentation>
-      </annotation>
-      <restriction base="string">
-         <pattern value="-?([0-9]+|\$\{[^{}]+\})" />
-      </restriction>
-   </simpleType>
-
-</schema>

Reply via email to