This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch doc-reference
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
The following commit(s) were added to refs/heads/doc-reference by this push:
new de964e5 Add example of generated schema
de964e5 is described below
commit de964e5f3f87bb4e5bc5e19f37e3635839e42021
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Thu Dec 7 18:31:03 2023 +0100
Add example of generated schema
Part of apache/logging-log4j2#1955
---
log4j-docgen/src/test/resources/expected-log4j.xsd | 548 ++++++++++++---------
1 file changed, 323 insertions(+), 225 deletions(-)
diff --git a/log4j-docgen/src/test/resources/expected-log4j.xsd
b/log4j-docgen/src/test/resources/expected-log4j.xsd
index 67e1dcb..bf7b311 100644
--- a/log4j-docgen/src/test/resources/expected-log4j.xsd
+++ b/log4j-docgen/src/test/resources/expected-log4j.xsd
@@ -1,229 +1,327 @@
<?xml version="1.0" encoding="UTF-8"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:log4j="http://logging.apache.org/log4j/2.0/config"
elementFormDefault="qualified">
- <simpleType name="org.apache.logging.log4j.Level">
- <restriction base="string">
- <enumeration value="OFF">
- <annotation>
- <documentation>Special level that disables logging. No
events should be logged at this level.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="FATAL">
- <annotation>
- <documentation>A fatal event that will prevent the
application from continuing.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="ERROR">
- <annotation>
- <documentation>An error in the application, possibly
recoverable.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="WARN">
- <annotation>
- <documentation>An event that might possible lead to an
error.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="INFO">
- <annotation>
- <documentation>An event for informational
purposes.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="DEBUG">
- <annotation>
- <documentation>A general debugging event.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="TRACE">
- <annotation>
- <documentation>A fine-grained debug message, typically
capturing the flow through the application.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="ALL">
- <annotation>
- <documentation>All events should be logged.</documentation>
- </annotation>
- </enumeration>
- </restriction>
- </simpleType>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:log4j="http://logging.apache.org/log4j/2.0/config"
elementFormDefault="qualified"
targetNamespace="http://logging.apache.org/log4j/2.0/config">
+ <element type="log4j:org.apache.logging.log4j.core.config.Configuration"
name="Configuration"/>
+ <simpleType name="org.apache.logging.log4j.Level">
+ <restriction base="string">
+ <enumeration value="OFF">
+ <annotation>
+ <documentation>Special level that disables logging. No events should
be logged at this level.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="FATAL">
+ <annotation>
+ <documentation>A fatal event that will prevent the application from
continuing.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ERROR">
+ <annotation>
+ <documentation>An error in the application, possibly
recoverable.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="WARN">
+ <annotation>
+ <documentation>An event that might possible lead to an
error.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="INFO">
+ <annotation>
+ <documentation>An event for informational purposes.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="DEBUG">
+ <annotation>
+ <documentation>A general debugging event.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="TRACE">
+ <annotation>
+ <documentation>A fine-grained debug message, typically capturing the
flow through the application.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="ALL">
+ <annotation>
+ <documentation>All events should be logged.</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType name="org.apache.logging.log4j.core.Filter.Result">
+ <restriction base="string">
+ <enumeration value="ACCEPT">
+ <annotation>
+ <documentation>The event will be processed without further filtering
based on the log Level.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="NEUTRAL">
+ <annotation>
+ <documentation>No decision could be made, further filtering should
occur.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="DENY">
+ <annotation>
+ <documentation>The event should not be processed.</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <simpleType
name="org.apache.logging.log4j.core.appender.ConsoleAppender.Target">
+ <restriction base="string">
+ <enumeration value="SYSTEM_OUT">
+ <annotation>
+ <documentation>Logs to the standard output.</documentation>
+ </annotation>
+ </enumeration>
+ <enumeration value="SYSTEM_ERR">
+ <annotation>
+ <documentation>Logs to the standard error.</documentation>
+ </annotation>
+ </enumeration>
+ </restriction>
+ </simpleType>
+ <complexType name="org.apache.logging.log4j.core.appender.ConsoleAppender">
+ <sequence>
+ <group ref="log4j:org.apache.logging.log4j.core.Filter.group"
minOccurs="0">
+ <annotation>
+ <documentation>A filter to apply to events before sending them to
destination.</documentation>
+ </annotation>
+ </group>
+ <group ref="log4j:org.apache.logging.log4j.core.Layout.group">
+ <annotation>
+ <documentation>The layout to be used with the
appender.</documentation>
+ </annotation>
+ </group>
+ </sequence>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>The name of the appender used in appender references.
+Must be unique.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="ignoreExceptions" type="boolean">
+ <annotation>
+ <documentation>If set to `false` logging exceptions will be forwarded
to the caller.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="bufferedIo" type="boolean">
+ <annotation>
+ <documentation>If set to `true` (default) the appender will buffer
messages before sending them.
+This attribute is ignored if `immediateFlush` is set to `true`.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="bufferSize" type="int">
+ <annotation>
+ <documentation>Size in bytes of the appender's buffer.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="immediateFlush" type="boolean">
+ <annotation>
+ <documentation>If set to `true`, the appender flushes the output
stream at each message and
+buffering is disabled regardless of the value of `bufferedIo`.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="target"
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender.Target">
+ <annotation>
+ <documentation>Specifies the target of the appender.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType
name="org.apache.logging.log4j.core.config.AppenderRef"></complexType>
+ <complexType name="org.apache.logging.log4j.core.config.AppendersPlugin">
+ <sequence>
+ <group ref="log4j:org.apache.logging.log4j.core.Appender.group"
minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation>A list of appender.</documentation>
+ </annotation>
+ </group>
+ </sequence>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.config.Configuration">
+ <sequence></sequence>
+ <attribute name="advertiser" type="string">
+ <annotation>
+ <documentation>If set it should contain the name of an `Advertiser`
plugin (cf.
+https://logging.apache.org/log4j/2.x/manual/configuration.html#chainsaw-can-automatically-process-your-log-files-advertising-ap[documentation]
+).
+Log4j Core provides a single implementation based on JmDNS called
`MulticastDns`.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="dest" type="string">
+ <annotation>
+ <documentation>Specifies the destination for StatusLogger events.
+The possible values are:
+* `out` for using standard out (default),
+* `err` for using standard error,
+* a string that is interpreted in order as URI, URL or the path to a local
file.
- <element type="log4j:org.apache.logging.log4j.core.config.Configuration"
name="Configuration"></element>
- <complexType name="org.apache.logging.log4j.core.appender.ConsoleAppender">
- <complexContent>
- <attribute name="name" type="string">
- <annotation>
- <documentation>The name of the appender used in appender
references.
- Must be unique.</documentation>
- </annotation>
- </attribute>
- <attribute name="ignoreExceptions" type="boolean">
- <annotation>
- <documentation>If set to `false` logging exceptions will
be forwarded to the caller.</documentation>
- </annotation>
- </attribute>
- <attribute name="bufferedIo" type="boolean">
- <annotation>
- <documentation>If set to `true` (default) the appender
will buffer messages before sending them.
- This attribute is ignored if `immediateFlush` is set
to `true`.</documentation>
- </annotation>
- </attribute>
- <attribute name="bufferSize" type="int">
- <annotation>
- <documentation>Size in bytes of the appender's
buffer.</documentation>
- </annotation>
- </attribute>
- <attribute name="immediateFlush" type="boolean">
- <annotation>
- <documentation>If set to `true`, the appender flushes the
output stream at each message and
- buffering is disabled regardless of the value of
`bufferedIo`.</documentation>
- </annotation>
- </attribute>
- <attribute name="target"
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender.Target">
- <annotation>
- <documentation>Specifies the target of the
appender.</documentation>
- </annotation>
- </attribute>
- <group ref="log4j:org.apache.logging.log4j.core.Layout">
- <annotation>
- <documentation>The layout to be used with the
appender.</documentation>
- </annotation>
- </group>
- </complexContent>
- </complexType>
- <complexType name="org.apache.logging.log4j.core.config.Property">
- <simpleContent>
- <attribute name="name" type="string">
- <annotation>
- <documentation>Name of the property.</documentation>
- </annotation>
- </attribute>
- <attribute name="value" type="string">
- <annotation>
- <documentation>Value of the property.</documentation>
- </annotation>
- </attribute>
- </simpleContent>
- </complexType>
- <complexType name="org.apache.logging.log4j.core.config.AppendersPlugin">
- <complexContent>
- <group ref="log4j:org.apache.logging.log4j.core.Appender"
minOccurs="0" maxOccurs="unbounded">
- <annotation>
- <documentation>A list of appender.</documentation>
- </annotation>
- </group>
- </complexContent>
- </complexType>
- <complexType name="org.apache.logging.log4j.core.config.LoggersPlugin">
- <complexContent>
- <group
ref="log4j:org.apache.logging.log4j.core.config.LoggerConfig" minOccurs="0"
maxOccurs="unbounded">
- <annotation>
- <documentation>A list of logger
configurations.</documentation>
- </annotation>
- </group>
- </complexContent>
- </complexType>
- <complexType name="org.apache.logging.log4j.core.config.PropertiesPlugin">
- <complexContent></complexContent>
- </complexType>
- <complexType name="org.apache.logging.log4j.core.config.Configuration">
- <complexContent>
- <attribute name="advertiser" type="string">
- <annotation>
- <documentation>If set it should contain the name of an
`Advertiser` plugin (cf.
-
https://logging.apache.org/log4j/2.x/manual/configuration.html#chainsaw-can-automatically-process-your-log-files-advertising-ap[documentation]
- ).
- Log4j Core provides a single implementation based on
JmDNS called `MulticastDns`.</documentation>
- </annotation>
- </attribute>
- <attribute name="dest" type="string">
- <annotation>
- <documentation>Specifies the destination for StatusLogger
events.
- The possible values are:
- * `out` for using standard out (default),
- * `err` for using standard error,
- * a string that is interpreted in order as URI, URL or
the path to a local file.
+If the provided value is invalid, then the default destination of standard out
will be used.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>Name of the configuration.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="monitorInterval" type="int">
+ <annotation>
+ <documentation>Number of seconds between polls for configuration
changes.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="schema" type="string">
+ <annotation>
+ <documentation>The name of a classpath resource to use to validate the
configuration.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="shutdownHook" type="string">
+ <annotation>
+ <documentation>Specifies whether Log4j should automatically shut down
when the JVM shuts down.
+Possible values:
+* `enable`: to enable unconditionally the hook,
+* `disable`: to disable unconditionally the hook.
- If the provided value is invalid, then the default
destination of standard out will be used.</documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>Name of the configuration.</documentation>
- </annotation>
- </attribute>
- <attribute name="monitorInterval" type="int">
- <annotation>
- <documentation>Number of seconds between polls for
configuration changes.</documentation>
- </annotation>
- </attribute>
- <attribute name="schema" type="string">
- <annotation>
- <documentation>The name of a classpath resource to use to
validate the configuration.</documentation>
- </annotation>
- </attribute>
- <attribute name="shutdownHook" type="string">
- <annotation>
- <documentation>Specifies whether Log4j should
automatically shut down when the JVM shuts down.
- Possible values:
- * `enable`: to enable unconditionally the hook,
- * `disable`: to disable unconditionally the hook.
-
- The shutdown hook is enabled by default, unless Log4j
Core detects the presence of the Servlet
- API.</documentation>
- </annotation>
- </attribute>
- <attribute name="shutdownTimeout" type="int">
- <annotation>
- <documentation>Timeout in milliseconds of the logger
context shut down.</documentation>
- </annotation>
- </attribute>
- <attribute name="status"
type="log4j:org.apache.logging.log4j.Level">
- <annotation>
- <documentation>Sets the level of the status
logger.</documentation>
- </annotation>
- </attribute>
- <attribute name="strict" type="boolean">
- <annotation>
- <documentation>If set to `true` the configuration file
will be validated using an XML schema.</documentation>
- </annotation>
- </attribute>
- <attribute name="verbose" type="string">
- <annotation>
- <documentation>Specifies the verbosity level for the
status logger.
- This only applies to classes configured by
`StatusConfiguration#setVerboseClasses`.</documentation>
- </annotation>
- </attribute>
- <group
ref="log4j:org.apache.logging.log4j.core.config.CustomLevels" minOccurs="0">
- <annotation>
- <documentation>Wrapper element for a list of custom
levels.</documentation>
- </annotation>
- </group>
- </complexContent>
- </complexType>
- <simpleType
name="org.apache.logging.log4j.core.appender.ConsoleAppender.Target">
- <restriction base="string">
- <enumeration value="SYSTEM_OUT">
- <annotation>
- <documentation>Logs to the standard output.</documentation>
- </annotation>
- </enumeration>
- <enumeration value="SYSTEM_ERR">
- <annotation>
- <documentation>Logs to the standard error.</documentation>
- </annotation>
- </enumeration>
- </restriction>
- </simpleType>
- <group name="org.apache.logging.log4j.core.config.LoggerConfig">
- <choice></choice>
- </group>
- <group name="org.apache.logging.log4j.core.Appender">
- <choice>
- <element name="Console"
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender"></element>
- </choice>
- </group>
- <group name="org.apache.logging.log4j.core.config.CustomLevels">
- <choice></choice>
- </group>
- <group name="org.apache.logging.log4j.core.Layout">
- <choice></choice>
- </group>
+The shutdown hook is enabled by default, unless Log4j Core detects the
presence of the Servlet
+API.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="shutdownTimeout" type="int">
+ <annotation>
+ <documentation>Timeout in milliseconds of the logger context shut
down.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="status" type="log4j:org.apache.logging.log4j.Level">
+ <annotation>
+ <documentation>Sets the level of the status logger.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="strict" type="boolean">
+ <annotation>
+ <documentation>If set to `true` the configuration file will be
validated using an XML schema.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="verbose" type="string">
+ <annotation>
+ <documentation>Specifies the verbosity level for the status logger.
+This only applies to classes configured by
`StatusConfiguration#setVerboseClasses`.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.config.CustomLevelConfig">
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>The name of the level.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="intLevel" type="int">
+ <annotation>
+ <documentation>An integer determines the strength of the custom level
relative to the built-in levels.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.config.CustomLevels">
+ <sequence></sequence>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.config.LoggerConfig">
+ <sequence>
+ <group ref="log4j:org.apache.logging.log4j.core.Filter.group"
minOccurs="0">
+ <annotation>
+ <documentation>A filter to filter events, before calling the
appenders.</documentation>
+ </annotation>
+ </group>
+ </sequence>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>The name of the logger.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="level" type="log4j:org.apache.logging.log4j.Level">
+ <annotation>
+ <documentation>The level of the logger.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType
name="org.apache.logging.log4j.core.config.LoggerConfig.RootLogger">
+ <sequence>
+ <group ref="log4j:org.apache.logging.log4j.core.Filter.group"
minOccurs="0">
+ <annotation>
+ <documentation>A filter to filter events, before calling the
appenders.</documentation>
+ </annotation>
+ </group>
+ </sequence>
+ <attribute name="level" type="log4j:org.apache.logging.log4j.Level">
+ <annotation>
+ <documentation>The level of the logger.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.config.LoggersPlugin">
+ <sequence>
+ <group
ref="log4j:org.apache.logging.log4j.core.config.LoggerConfig.group"
minOccurs="0" maxOccurs="unbounded">
+ <annotation>
+ <documentation>A list of logger configurations.</documentation>
+ </annotation>
+ </group>
+ </sequence>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.config.PropertiesPlugin">
+ <sequence></sequence>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.config.Property">
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>Name of the property.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="value" type="string">
+ <annotation>
+ <documentation>Value of the property.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <complexType name="org.apache.logging.log4j.core.filter.BurstFilter">
+ <attribute name="onMatch"
type="log4j:org.apache.logging.log4j.core.Filter.Result">
+ <annotation>
+ <documentation>Action to perform if the filter matches.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="onMismatch"
type="log4j:org.apache.logging.log4j.core.Filter.Result">
+ <annotation>
+ <documentation>Action to perform if the filter does not
match.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="level" type="log4j:org.apache.logging.log4j.Level">
+ <annotation>
+ <documentation>Log events less specific than this level are filtered,
while events with level equal or more
+specific always match.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="rate" type="float">
+ <annotation>
+ <documentation>Sets the average number of events per second to
allow.</documentation>
+ </annotation>
+ </attribute>
+ <attribute name="maxBurst" type="long">
+ <annotation>
+ <documentation>Sets the maximum number of events that can occur before
events are filtered for exceeding the
+average rate.</documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ <group name="org.apache.logging.log4j.core.Appender.group">
+ <choice>
+ <element name="Console"
type="log4j:org.apache.logging.log4j.core.appender.ConsoleAppender"/>
+ </choice>
+ </group>
+ <group name="org.apache.logging.log4j.core.Filter.group">
+ <choice>
+ <element name="BurstFilter"
type="log4j:org.apache.logging.log4j.core.filter.BurstFilter"/>
+ </choice>
+ </group>
+ <group name="org.apache.logging.log4j.core.Layout.group">
+ <choice></choice>
+ </group>
+ <group name="org.apache.logging.log4j.core.config.LoggerConfig.group">
+ <choice>
+ <element name="Root"
type="log4j:org.apache.logging.log4j.core.config.LoggerConfig.RootLogger"/>
+ <element name="Logger"
type="log4j:org.apache.logging.log4j.core.config.LoggerConfig"/>
+ </choice>
+ </group>
</schema>
\ No newline at end of file