org.apache.log4j.xml
Class XSLTLayout

java.lang.Object
  extended by org.apache.log4j.Layout
      extended by org.apache.log4j.xml.XSLTLayout
All Implemented Interfaces:
org.apache.log4j.spi.OptionHandler, UnrecognizedElementHandler

public final class XSLTLayout
extends org.apache.log4j.Layout
implements UnrecognizedElementHandler

XSLTLayout transforms each event as a document using a specified or default XSLT transform. The default XSLT transform produces a result similar to XMLLayout. When used with a FileAppender or similar, the transformation of an event will be appended to the results for previous transforms. If each transform results in an XML element, then resulting file will only be an XML entity since an XML document requires one and only one top-level element. To process the entity, reference it in a XML document like so:

  <!DOCTYPE log4j:eventSet [<!ENTITY data SYSTEM "data.xml">]>

  <log4j:eventSet xmlns:log4j="http://jakarta.apache.org/log4j/">
    &data
  </log4j:eventSet>

 
The layout will detect the encoding and media-type specified in the transform. If no encoding is specified in the transform, an xsl:output element specifying the US-ASCII encoding will be inserted before processing the transform. If an encoding is specified in the transform, the same encoding should be explicitly specified for the appender. Extracting MDC values can be expensive when used with log4j releases prior to 1.2.15. Output of MDC values is enabled by default but be suppressed by setting properties to false. Extracting location info can be expensive regardless of log4j version. Output of location info is disabled by default but can be enabled by setting locationInfo to true. Embedded transforms in XML configuration should not depend on namespace prefixes defined earlier in the document as namespace aware parsing in not generally performed when using DOMConfigurator. The transform will serialize and reparse to get the namespace aware document needed.


Field Summary
 
Fields inherited from class org.apache.log4j.Layout
LINE_SEP, LINE_SEP_LEN
 
Constructor Summary
XSLTLayout()
          Default constructor.
 
Method Summary
 void activateOptions()
          
 java.lang.String format(org.apache.log4j.spi.LoggingEvent event)
          
 java.lang.String getContentType()
          
 boolean getLocationInfo()
          Gets whether location info should be output.
 boolean getProperties()
          Gets whether MDC key-value pairs should be output.
 boolean ignoresThrowable()
          Gets whether throwables should not be output.
 boolean parseUnrecognizedElement(org.w3c.dom.Element element, java.util.Properties props)
          Called to inform a configured object when an unrecognized child element is encountered.
 void setIgnoresThrowable(boolean ignoresThrowable)
          Sets whether throwables should not be output.
 void setLocationInfo(boolean flag)
          The LocationInfo option takes a boolean value.
 void setProperties(boolean flag)
          Sets whether MDC key-value pairs should be output, default false.
 void setTransform(org.w3c.dom.Document xsltdoc)
          Sets XSLT transform.
 
Methods inherited from class org.apache.log4j.Layout
getFooter, getHeader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XSLTLayout

public XSLTLayout()
Default constructor.

Method Detail

getContentType

public java.lang.String getContentType()

Overrides:
getContentType in class org.apache.log4j.Layout

setLocationInfo

public void setLocationInfo(boolean flag)
The LocationInfo option takes a boolean value. By default, it is set to false which means there will be no location information output by this layout. If the the option is set to true, then the file name and line number of the statement at the origin of the log statement will be output.

If you are embedding this layout within an org.apache.log4j.net.SMTPAppender then make sure to set the LocationInfo option of that appender as well.

Parameters:
flag - new value.

getLocationInfo

public boolean getLocationInfo()
Gets whether location info should be output.

Returns:
if location is output.

setProperties

public void setProperties(boolean flag)
Sets whether MDC key-value pairs should be output, default false.

Parameters:
flag - new value.

getProperties

public boolean getProperties()
Gets whether MDC key-value pairs should be output.

Returns:
true if MDC key-value pairs are output.

activateOptions

public void activateOptions()

Specified by:
activateOptions in interface org.apache.log4j.spi.OptionHandler

ignoresThrowable

public boolean ignoresThrowable()
Gets whether throwables should not be output.

Specified by:
ignoresThrowable in class org.apache.log4j.Layout
Returns:
true if throwables should not be output.

setIgnoresThrowable

public void setIgnoresThrowable(boolean ignoresThrowable)
Sets whether throwables should not be output.

Parameters:
ignoresThrowable - if true, throwables should not be output.

format

public java.lang.String format(org.apache.log4j.spi.LoggingEvent event)

Specified by:
format in class org.apache.log4j.Layout

setTransform

public void setTransform(org.w3c.dom.Document xsltdoc)
                  throws javax.xml.transform.TransformerConfigurationException
Sets XSLT transform.

Parameters:
xsltdoc - DOM document containing XSLT transform source, may be modified.
Throws:
javax.xml.transform.TransformerConfigurationException - if transformer can not be created.

parseUnrecognizedElement

public boolean parseUnrecognizedElement(org.w3c.dom.Element element,
                                        java.util.Properties props)
                                 throws java.lang.Exception
Called to inform a configured object when an unrecognized child element is encountered.

Specified by:
parseUnrecognizedElement in interface UnrecognizedElementHandler
Parameters:
element - element, may not be null.
props - properties in force, may be null.
Returns:
true if configured object recognized the element
Throws:
java.lang.Exception - throw an exception to prevent activation of the configured object.


Copyright © 2010 The Apache Software Foundation. Licensed under the Apache License, Version 2.0

Apache Extras Companion for Apache log4j, Apache log4j and Apache are trademarks of the Apache Software Foundation.