[Lilith-devel] SF.net SVN: lilith:[147] trunk/lilith
Brought to you by:
huxhorn
From: <hu...@us...> - 2009-01-26 20:37:27
|
Revision: 147 http://lilith.svn.sourceforge.net/lilith/?rev=147&view=rev Author: huxhorn Date: 2009-01-26 20:37:19 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Updated XML Schema to include NDC. Implemented XML I/O of NDC. See ticket:27. Modified Paths: -------------- trunk/lilith/src/changes/changes.xml trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventReader.java trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventSchemaConstants.java trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventWriter.java trunk/lilith-data/logging-xml/src/test/java/de/huxhorn/lilith/data/logging/xml/LoggingEventIOTest.java trunk/lilith-data/xml-schema/examples/LoggingEvent.xml Added Paths: ----------- trunk/lilith-data/xml-schema/schema/logging/12/ trunk/lilith-data/xml-schema/schema/logging/12/LoggingEvent.xsd trunk/lilith-data/xml-schema/schema/logging/12/index.php Modified: trunk/lilith/src/changes/changes.xml =================================================================== --- trunk/lilith/src/changes/changes.xml 2009-01-26 20:35:32 UTC (rev 146) +++ trunk/lilith/src/changes/changes.xml 2009-01-26 20:37:19 UTC (rev 147) @@ -109,6 +109,12 @@ <action dev="jhux" type="add" issue="27"> NDC support in detailsView.groovy </action> + <action dev="jhux" type="update" issue="27"> + Updated XML Schema to include NDC. + </action> + <action dev="jhux" type="update" issue="27"> + Implemented XML I/O of NDC. + </action> <action dev="jhux" type="add"> TODO: Add transfer size statistics. </action> Modified: trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventReader.java =================================================================== --- trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventReader.java 2009-01-26 20:35:32 UTC (rev 146) +++ trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventReader.java 2009-01-26 20:37:19 UTC (rev 147) @@ -82,7 +82,13 @@ } reader.nextTag(); result.setMessagePattern(StaxUtilities.readSimpleTextNodeIfAvailable(reader, NAMESPACE_URI, MESSAGE_NODE)); - readArguments(reader, result); + + List<String> args = readArguments(reader); + if(args!=null) + { + result.setArguments(args.toArray(new String[args.size()])); + } + readThrowable(reader, result); result.setMdc(readMdc(reader)); result.setNdc(readNdc(reader)); @@ -245,10 +251,28 @@ return null; } - private List<Message> readNdc(XMLStreamReader reader) + private Message[] readNdc(XMLStreamReader reader) throws XMLStreamException { - // TODO: implement readNdc. + int type = reader.getEventType(); + if(XMLStreamConstants.START_ELEMENT == type && NDC_NODE.equals(reader.getLocalName()) && NAMESPACE_URI + .equals(reader.getNamespaceURI())) + { + List<Message> ndc = new ArrayList<Message>(); + reader.nextTag(); + for(; ;) + { + Message entry = readNdcEntry(reader); + if(entry == null) + { + break; + } + ndc.add(entry); + } + reader.require(XMLStreamConstants.END_ELEMENT, NAMESPACE_URI, NDC_NODE); + reader.nextTag(); + return ndc.toArray(new Message[ndc.size()]); + } return null; } @@ -269,6 +293,31 @@ return null; } + private Message readNdcEntry(XMLStreamReader reader) + throws XMLStreamException + { + int type = reader.getEventType(); + if(XMLStreamConstants.START_ELEMENT == type && NDC_ENTRY_NODE.equals(reader.getLocalName()) && NAMESPACE_URI + .equals(reader.getNamespaceURI())) + { + reader.nextTag(); + + Message entry = new Message(); + entry.setMessagePattern(StaxUtilities.readSimpleTextNodeIfAvailable(reader, NAMESPACE_URI, MESSAGE_NODE)); + + List<String> args = readArguments(reader); + if(args!=null) + { + entry.setArguments(args.toArray(new String[args.size()])); + } + + reader.require(XMLStreamConstants.END_ELEMENT, NAMESPACE_URI, NDC_ENTRY_NODE); + reader.nextTag(); + return entry; + } + return null; + } + private void readThrowable(XMLStreamReader reader, LoggingEvent event) throws XMLStreamException { @@ -313,7 +362,7 @@ return null; } - private void readArguments(XMLStreamReader reader, LoggingEvent event) + private List<String> readArguments(XMLStreamReader reader) throws XMLStreamException { int type = reader.getEventType(); @@ -334,8 +383,9 @@ String arg = readArgument(reader); args.add(arg); } - event.setArguments(args.toArray(new String[args.size()])); + return args; } + return null; } private String readArgument(XMLStreamReader reader) Modified: trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventSchemaConstants.java =================================================================== --- trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventSchemaConstants.java 2009-01-26 20:35:32 UTC (rev 146) +++ trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventSchemaConstants.java 2009-01-26 20:37:19 UTC (rev 147) @@ -19,8 +19,8 @@ public interface LoggingEventSchemaConstants { - String NAMESPACE_URI = "http://lilith.sf.net/schema/logging/11"; - String NAMESPACE_LOCATION = "http://lilith.sf.net/schema/logging/11/LoggingEvent.xsd"; + String NAMESPACE_URI = "http://lilith.sf.net/schema/logging/12"; + String NAMESPACE_LOCATION = "http://lilith.sf.net/schema/logging/12/LoggingEvent.xsd"; String DEFAULT_NAMESPACE_PREFIX = "log"; @@ -49,6 +49,9 @@ String MDC_ENTRY_NODE = "Entry"; String MDC_ENTRY_KEY_ATTRIBUTE = "key"; + String NDC_NODE = "NDC"; + String NDC_ENTRY_NODE = "Entry"; + String MARKER_NODE = "Marker"; String MARKER_NAME_ATTRIBUTE = "name"; String MARKER_REFERENCE_NODE = "MarkerReference"; Modified: trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventWriter.java =================================================================== --- trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventWriter.java 2009-01-26 20:35:32 UTC (rev 146) +++ trunk/lilith-data/logging-xml/src/main/java/de/huxhorn/lilith/data/logging/xml/LoggingEventWriter.java 2009-01-26 20:37:19 UTC (rev 147) @@ -21,6 +21,7 @@ import de.huxhorn.lilith.data.logging.LoggingEvent; import de.huxhorn.lilith.data.logging.Marker; import de.huxhorn.lilith.data.logging.ThrowableInfo; +import de.huxhorn.lilith.data.logging.Message; import de.huxhorn.sulky.stax.DateTimeFormatter; import de.huxhorn.sulky.stax.GenericStreamWriter; import de.huxhorn.sulky.stax.StaxUtilities; @@ -120,7 +121,7 @@ .writeAttribute(writer, false, prefix, NAMESPACE_URI, TIMESTAMP_ATTRIBUTE, dateTimeFormatter.format(event.getTimeStamp())); StaxUtilities.writeSimpleTextNode(writer, prefix, NAMESPACE_URI, MESSAGE_NODE, event.getMessagePattern()); - writeArguments(writer, event); + writeArguments(writer, event.getArguments()); writeThrowable(writer, event); writeMdc(writer, event); writeNdc(writer, event); @@ -186,12 +187,6 @@ } - private void writeNdc(XMLStreamWriter writer, LoggingEvent event) - throws XMLStreamException - { - // TODO: implement writeNdc. - } - private void writeMdc(XMLStreamWriter writer, LoggingEvent event) throws XMLStreamException { @@ -217,10 +212,28 @@ } } - private void writeArguments(XMLStreamWriter writer, LoggingEvent event) + private void writeNdc(XMLStreamWriter writer, LoggingEvent event) throws XMLStreamException { - String[] arguments = event.getArguments(); + Message[] ndc = event.getNdc(); + if(ndc != null) + { + StaxUtilities.writeStartElement(writer, prefix, NAMESPACE_URI, NDC_NODE); + for(Message entry : ndc) + { + + StaxUtilities.writeStartElement(writer, prefix, NAMESPACE_URI, NDC_ENTRY_NODE); + StaxUtilities.writeSimpleTextNode(writer, prefix, NAMESPACE_URI, MESSAGE_NODE, entry.getMessagePattern()); + writeArguments(writer, entry.getArguments()); + writer.writeEndElement(); + } + writer.writeEndElement(); + } + } + + private void writeArguments(XMLStreamWriter writer, String[] arguments) + throws XMLStreamException + { if(arguments != null) { StaxUtilities.writeStartElement(writer, prefix, NAMESPACE_URI, ARGUMENTS_NODE); Modified: trunk/lilith-data/logging-xml/src/test/java/de/huxhorn/lilith/data/logging/xml/LoggingEventIOTest.java =================================================================== --- trunk/lilith-data/logging-xml/src/test/java/de/huxhorn/lilith/data/logging/xml/LoggingEventIOTest.java 2009-01-26 20:35:32 UTC (rev 146) +++ trunk/lilith-data/logging-xml/src/test/java/de/huxhorn/lilith/data/logging/xml/LoggingEventIOTest.java 2009-01-26 20:37:19 UTC (rev 147) @@ -36,10 +36,8 @@ import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; import javax.xml.stream.XMLInputFactory; @@ -156,9 +154,10 @@ throws UnsupportedEncodingException, XMLStreamException { LoggingEvent event = createMinimalEvent(); - List<Message> ndc = new ArrayList<Message>(); - ndc.add(new Message("Pattern 1 {} {}", new String[]{"foo", "bar"})); - ndc.add(new Message("Pattern 2 {} {}", new String[]{"foo", "bar"})); + Message[] ndc = new Message[]{ + new Message("Pattern 1 {} {}", new String[]{"foo", "bar"}), + new Message("Pattern 2 {} {}", new String[]{"foo", "bar"}) + }; event.setNdc(ndc); check(event, true); } @@ -240,13 +239,11 @@ mdc.put("key3", "value3"); event.setMdc(mdc); - // TODO: set Ndc - /* - List<Message> ndc=new ArrayList<Message>(); - ndc.add(new Message("Pattern 1 {} {}", new String[]{"foo", "bar"})); - ndc.add(new Message("Pattern 2 {} {}", new String[]{"foo", "bar"})); - event.setNdc(ndc); - */ + Message[] ndc=new Message[]{ + new Message("Pattern 1 {} {}", new String[]{"foo", "bar"}), + new Message("Pattern 2 {} {}", new String[]{"foo", "bar"}) + }; + event.setNdc(ndc); Marker marker = new Marker("marker"); Marker marker2_1 = new Marker("marker2-1"); @@ -288,13 +285,11 @@ mdc.put("key3", "value3"); event.setMdc(mdc); - // TODO: set Ndc - /* - List<Message> ndc=new ArrayList<Message>(); - ndc.add(new Message("Pattern 1 {} {}", new String[]{"foo", "bar"})); - ndc.add(new Message("Pattern 2 {} {}", new String[]{"foo", "bar"})); - event.setNdc(ndc); - */ + Message[] ndc=new Message[]{ + new Message("Pattern 1 {} {}", new String[]{"foo", "bar"}), + new Message("Pattern 2 {} {}", new String[]{"foo", "bar"}) + }; + event.setNdc(ndc); Marker marker = new Marker("marker"); Marker marker2_1 = new Marker("marker2-1"); Modified: trunk/lilith-data/xml-schema/examples/LoggingEvent.xml =================================================================== --- trunk/lilith-data/xml-schema/examples/LoggingEvent.xml 2009-01-26 20:35:32 UTC (rev 146) +++ trunk/lilith-data/xml-schema/examples/LoggingEvent.xml 2009-01-26 20:37:19 UTC (rev 147) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<foo:LoggingEvent xmlns:foo="http://lilith.sf.net/schema/logging/10" +<foo:LoggingEvent xmlns:foo="http://lilith.sf.net/schema/logging/12" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://lilith.sf.net/schema/logging/10 http://lilith.sf.net/schema/logging/10/LoggingEvent.xsd" + xsi:schemaLocation="http://lilith.sf.net/schema/logging/12 http://lilith.sf.net/schema/logging/12/LoggingEvent.xsd" logger="Logger" level="INFO" threadName="Thread-Name" timeStamp="2008-03-19T11:40:24.843+01:00"> <foo:Message>EventMessage</foo:Message> <foo:Arguments> @@ -327,6 +327,16 @@ <foo:Entry key="key2">value2</foo:Entry> <foo:Entry key="key1">value1</foo:Entry> </foo:MDC> + <foo:NDC> + <foo:Entry> + <foo:Message>A Message {} {}</foo:Message> + <foo:Arguments> + <foo:Argument>arg1</foo:Argument> + <foo:null/> + <foo:Argument>arg3</foo:Argument> + </foo:Arguments> + </foo:Entry> + </foo:NDC> <foo:Marker name="marker"> <foo:Marker name="marker2-1"/> <foo:Marker name="marker2-2"> Added: trunk/lilith-data/xml-schema/schema/logging/12/LoggingEvent.xsd =================================================================== --- trunk/lilith-data/xml-schema/schema/logging/12/LoggingEvent.xsd (rev 0) +++ trunk/lilith-data/xml-schema/schema/logging/12/LoggingEvent.xsd 2009-01-26 20:37:19 UTC (rev 147) @@ -0,0 +1,392 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Lilith - a log event viewer. +Copyright (C) 2007-2009 Joern Huxhorn + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +--> +<!-- +Changes in 1.1: +Added CodeLocation, Version, Exact to StackTraceElement and omittedElements to Throwable. +StackTraceElement is now an xs:element so it's possible to create an xml document that contains only such an element. + +Changes in 1.2: +Added NDC and NDCEntry. +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://lilith.sf.net/schema/logging/12" xmlns:logging="http://lilith.sf.net/schema/logging/12" xmlns:es="http://lilith.sf.net/schema/eventsource/10" targetNamespace="http://lilith.sf.net/schema/logging/12" elementFormDefault="qualified"> + <xs:import namespace="http://lilith.sf.net/schema/eventsource/10" schemaLocation="http://lilith.sf.net/schema/eventsource/10/EventSource.xsd"/> + <xs:element name="LoggingEvents"> + <xs:annotation> + <xs:documentation xml:lang="en">A list of logging events.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="es:SourceIdentifier"> + <xs:annotation> + <xs:documentation xml:lang="en">The source identifier of the contained events. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="LoggingEvent" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en">The logging events.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="startIndex" type="xs:nonNegativeInteger" use="optional" default="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The index of the first event contained in this list of logging + events. It is only used if logging event lists are transfered partially. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="LoggingEvent"> + <xs:annotation> + <xs:documentation xml:lang="en">A single logging event.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Message" type="WhitespacePreservingString"> + <xs:annotation> + <xs:documentation xml:lang="en">The (unformatted) message of the logging event. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Arguments" type="Arguments" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional arguments of the logging event.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Throwable" type="Throwable" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional Throwable of the logging event.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MDC" type="MDC" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional MDC of the logging event.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NDC" type="NDC" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional NDC of the logging event.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Marker" type="Marker" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional marker hierarchy of the logging event. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CallStack" type="StackTrace" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional call stack trace of the logging event. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="logger" type="NonEmptyCollapsingString" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">The name of the Logger that created this logging event. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="level" type="LoggingLevel" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">The level of the logging event.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="threadName" type="WhitespacePreservingString" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en">The thread name of the logging event.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="timeStamp" type="xs:dateTime" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">The timestamp of the logging event.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:unique name="MdcKey"> + <xs:annotation> + <xs:documentation xml:lang="en">MDC entries must have unique keys.</xs:documentation> + </xs:annotation> + <xs:selector xpath="logging:MDC/logging:Entry"/> + <xs:field xpath="@key"/> + </xs:unique> + <xs:key name="MarkerName"> + <xs:annotation> + <xs:documentation xml:lang="en">Marker names in the same hierarchy must be unique.</xs:documentation> + </xs:annotation> + <xs:selector xpath=".//logging:Marker"/> + <xs:field xpath="@name"/> + </xs:key> + <xs:keyref name="MarkerReference" refer="MarkerName"> + <xs:annotation> + <xs:documentation xml:lang="en">Marker references must reference Markers of the same hierarchy + </xs:documentation> + </xs:annotation> + <xs:selector xpath=".//logging:MarkerReference"/> + <xs:field xpath="@ref"/> + </xs:keyref> + </xs:element> + <xs:simpleType name="LoggingLevel"> + <xs:annotation> + <xs:documentation xml:lang="en">The valid logging levels.</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="TRACE"/> + <xs:enumeration value="DEBUG"/> + <xs:enumeration value="INFO"/> + <xs:enumeration value="WARN"/> + <xs:enumeration value="ERROR"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="Arguments"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional arguments of the logging event.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element name="Argument" type="WhitespacePreservingString"> + <xs:annotation> + <xs:documentation xml:lang="en">The list of arguments.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="null"> + <xs:complexType> + <xs:annotation> + <xs:documentation xml:lang="en">This element is used for null arguments. It must be empty. + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:anyType"/> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:choice> + </xs:sequence> + </xs:complexType> + <xs:complexType name="Throwable"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional Throwable of the logging event.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Message" type="WhitespacePreservingString"> + <xs:annotation> + <xs:documentation xml:lang="en">The message of the Throwable.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="StackTrace" type="StackTrace"> + <xs:annotation> + <xs:documentation xml:lang="en">The stack trace of the Throwable.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Cause" type="Throwable" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional cause of the Throwable.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="name" type="NonEmptyCollapsingString" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">The class name of the Throwable.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="omittedElements" type="xs:nonNegativeInteger" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en">The number of omitted common StackTraceElements</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <!-- MDC --> + <xs:complexType name="MDC"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional MDC (Mapped Diagnostic Context) of the logging event.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Entry" type="MDCEntry" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en">The entries of the MDC. Entries must have unique keys. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="MDCEntry"> + <xs:annotation> + <xs:documentation xml:lang="en">Represents a key-value pair.</xs:documentation> + </xs:annotation> + <xs:simpleContent> + <xs:extension base="WhitespacePreservingString"> + <xs:attribute name="key" type="WhitespacePreservingString" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <!-- NDC --> + <xs:complexType name="NDC"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional NDC (Nested Diagnostic Context) of the logging event.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Entry" type="NDCEntry" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en">The entries of the NDC. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="NDCEntry"> + <xs:annotation> + <xs:documentation xml:lang="en">Represents a message with arguments.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Message" type="WhitespacePreservingString" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The (unformatted) message of the NDC entry. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Arguments" type="Arguments" minOccurs="0"> + <xs:annotation> + <xs:documentation xml:lang="en">The optional arguments of the NDC entry.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <!-- Marker --> + <xs:complexType name="Marker"> + <xs:annotation> + <xs:documentation xml:lang="en">A Marker hierarchy.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en">The children of the Marker.</xs:documentation> + </xs:annotation> + <xs:element name="Marker" type="Marker"/> + <xs:element name="MarkerReference" type="MarkerReference"> + <xs:annotation> + <xs:documentation xml:lang="en">A MarkerReference references a Marker of the same hierarchy. + </xs:documentation> + </xs:annotation> + </xs:element> + </xs:choice> + </xs:sequence> + <xs:attribute name="name" type="WhitespacePreservingString" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">The name of the Marker. Must be unique relative to it's hierarchy. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="MarkerReference"> + <xs:annotation> + <xs:documentation xml:lang="en">This type references a Marker in the same hierarchy.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:anyType"> + <xs:attribute name="ref" type="WhitespacePreservingString" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">References the name of a Marker in the same hierarchy. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <!-- StackTrace --> + <xs:complexType name="StackTrace"> + <xs:annotation> + <xs:documentation xml:lang="en">A stack trace.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="StackTraceElement" type="StackTraceElementType" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation xml:lang="en">The stack trace elements of the stack trace.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="StackTraceElement" type="StackTraceElementType"/> + <xs:complexType name="StackTraceElementType"> + <xs:annotation> + <xs:documentation xml:lang="en">This type represents a java.lang.StackTraceElement.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:choice minOccurs="0"> + <xs:element name="LineNumber" type="xs:nonNegativeInteger"> + <xs:annotation> + <xs:documentation xml:lang="en">The line number of the StackTraceElement.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Native"> + <xs:complexType> + <xs:annotation> + <xs:documentation xml:lang="en">This type is used to tag a StackTraceElement as native. This + tag must be empty. + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:anyType"/> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:choice> + <xs:element name="CodeLocation" minOccurs="0"/> + <xs:element name="Version" minOccurs="0"/> + <xs:element name="Exact" minOccurs="0"> + <xs:complexType> + <xs:annotation> + <xs:documentation xml:lang="en">This type is used to tag a StackTraceElement as native. This tag + must be empty. + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:anyType"/> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="className" type="NonEmptyCollapsingString" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">The class name of the StackTraceElement.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="methodName" type="NonEmptyCollapsingString" use="required"> + <xs:annotation> + <xs:documentation xml:lang="en">The method name of the StackTraceElement.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="fileName" type="NonEmptyCollapsingString" use="optional"> + <xs:annotation> + <xs:documentation xml:lang="en">The file name of the StackTraceElement.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:simpleType name="NonEmptyCollapsingString"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:whiteSpace value="collapse"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="WhitespacePreservingString"> + <xs:restriction base="xs:string"> + <xs:whiteSpace value="preserve"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> Added: trunk/lilith-data/xml-schema/schema/logging/12/index.php =================================================================== --- trunk/lilith-data/xml-schema/schema/logging/12/index.php (rev 0) +++ trunk/lilith-data/xml-schema/schema/logging/12/index.php 2009-01-26 20:37:19 UTC (rev 147) @@ -0,0 +1,4 @@ +<?php +header('Location:http://lilith.sf.net/schema/logging/12/LoggingEvent.xsd'); +?> + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |