Class XMLDecoder

java.lang.Object
org.apache.log4j.xml.XMLDecoder
All Implemented Interfaces:
Decoder

public class XMLDecoder extends Object implements Decoder
Decodes Logging Events in XML formated into elements that are used by Chainsaw.

This decoder can process a collection of log4j:event nodes ONLY (no XML declaration nor eventSet node)

NOTE: Only a single LoggingEvent is returned from the decode method even though the DTD supports multiple events nested in an eventSet.

NOTE: This class has been created on the assumption that all XML log files are encoded in UTF-8. There is no current support for any other encoding format at this time.

  • Field Details

  • Constructor Details

    • XMLDecoder

      public XMLDecoder(Component o)
      Create new instance.
      Parameters:
      o - owner
    • XMLDecoder

      public XMLDecoder()
      Create new instance.
  • Method Details

    • setAdditionalProperties

      public void setAdditionalProperties(Map properties)
      Sets an additionalProperty map, where each Key/Value pair is automatically added to each LoggingEvent as it is decoded.

      This is useful, say, to include the source file name of the Logging events

      Specified by:
      setAdditionalProperties in interface Decoder
      Parameters:
      properties - additional properties
    • parse

      private Document parse(String data)
      Converts the LoggingEvent data in XML string format into an actual XML Document class instance.
      Parameters:
      data - XML fragment
      Returns:
      dom document
    • decode

      public Vector<org.apache.log4j.spi.LoggingEvent> decode(URL url) throws IOException
      Decodes a File into a Vector of LoggingEvents.
      Specified by:
      decode in interface Decoder
      Parameters:
      url - the url of a file containing events to decode
      Returns:
      Vector of LoggingEvents
      Throws:
      IOException - if IO error during processing.
    • decodeEvents

      public Vector<org.apache.log4j.spi.LoggingEvent> decodeEvents(String document)
      Decodes a String representing a number of events into a Vector of LoggingEvents.
      Specified by:
      decodeEvents in interface Decoder
      Parameters:
      document - to decode events from
      Returns:
      Vector of LoggingEvents
    • decode

      public org.apache.log4j.spi.LoggingEvent decode(String data)
      Converts the string data into an XML Document, and then soaks out the relevant bits to form a new LoggingEvent instance which can be used by any Log4j element locally.
      Specified by:
      decode in interface Decoder
      Parameters:
      data - XML fragment
      Returns:
      a single LoggingEvent or null
    • decodeEvents

      private Vector<org.apache.log4j.spi.LoggingEvent> decodeEvents(Document document)
      Given a Document, converts the XML into a Vector of LoggingEvents.
      Parameters:
      document - XML document
      Returns:
      Vector of LoggingEvents
    • getCData

      private String getCData(Node n)
      Get contents of CDATASection.
      Parameters:
      n - CDATASection
      Returns:
      text content of all text or CDATA children of node.