## org.apache.log4j.rewrite
Class RewriteAppender

    java.lang.Object
      org.apache.log4j.AppenderSkeleton
          org.apache.log4j.rewrite.RewriteAppender

All Implemented Interfaces:
  Appender, AppenderAttachable, OptionHandler, UnrecognizedElementHandler

    public class RewriteAppender

extends AppenderSkeleton
implements AppenderAttachable, UnrecognizedElementHandler

This appender forwards a logging request to another appender after possibly rewriting the logging event. This appender (with the appropriate policy) replaces the MapFilter, PropertyFilter and ReflectionFilter from log4j 1.3.

Field Summary

Fields inherited from class org.apache.log4j.AppenderSkeleton
`closed, errorHandler, headFilter, layout, name, tailFilter, threshold`

Constructor Summary
`RewriteAppender()`

Method Summary
`void` `addAppender(Appender newAppender)` Add appender.
`protected void` `append(LoggingEvent event)` Subclasses of `AppenderSkeleton` should implement this method to perform actual logging.
`void` `close()` Close this `AsyncAppender` by interrupting the dispatcher thread which will process all pending events before exiting.
`Enumeration` `getAllAppenders()` Get iterator over attached appenders.
`Appender` `getAppender(String name)` Get appender by name.
`boolean` `isAttached(Appender appender)` Determines if specified appender is attached.
`boolean` `parseUnrecognizedElement(Element element, Properties props)` Called to inform a configured object when an unrecognized child element is encountered.
`void` `removeAllAppenders()` Removes and closes all attached appenders.
`void` `removeAppender(Appender appender)` Removes an appender.
`void` `removeAppender(String name)` Remove appender by name.
`boolean` `requiresLayout()` Configurators call this method to determine if the appender requires a layout.
`void` `setRewritePolicy(RewritePolicy rewritePolicy)`

Methods inherited from class org.apache.log4j.AppenderSkeleton
`activateOptions, addFilter, clearFilters, doAppend, finalize, getErrorHandler, getFilter, getFirstFilter, getLayout, getName, getThreshold, isAsSevereAsThreshold, setErrorHandler, setLayout, setName, setThreshold`

Methods inherited from class java.lang.Object
`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### RewriteAppender

    public RewriteAppender()

Method Detail

### append

    protected void append(LoggingEvent event)

  Subclasses of `AppenderSkeleton` should implement this method to perform actual logging. See also `AppenderSkeleton.doAppend` method.

  Specified by:
    `append` in class `AppenderSkeleton`

### addAppender

    public void addAppender(Appender newAppender)

  Add appender.

  Specified by:
    `addAppender` in interface `AppenderAttachable`
  Parameters:
    `newAppender` - appender to add, may not be null.

### getAllAppenders

    public Enumeration getAllAppenders()

  Get iterator over attached appenders.

  Specified by:
    `getAllAppenders` in interface `AppenderAttachable`
  Returns:
    iterator or null if no attached appenders.

### getAppender

    public Appender getAppender(String name)

  Get appender by name.

  Specified by:
    `getAppender` in interface `AppenderAttachable`
  Parameters:
    `name` - name, may not be null.
  Returns:
    matching appender or null.

### close

    public void close()

  Close this `AsyncAppender` by interrupting the dispatcher thread which will process all pending events before exiting.

  Specified by:
    `close` in interface `Appender`

### isAttached

    public boolean isAttached(Appender appender)

  Determines if specified appender is attached.

  Specified by:
    `isAttached` in interface `AppenderAttachable`
  Parameters:
    `appender` - appender.
  Returns:
    true if attached.

### requiresLayout

    public boolean requiresLayout()

  Configurators call this method to determine if the appender requires a layout. If this method returns `true`, meaning that layout is required, then the configurator will configure an layout using the configuration information at its disposal. If this method returns `false`, meaning that a layout is not required, then layout configuration will be skipped even if there is available layout configuration information at the disposal of the configurator..

  In the rather exceptional case, where the appender implementation admits a layout but can also work without it, then the appender should return `true`.

  Specified by:
    `requiresLayout` in interface `Appender`

### removeAllAppenders

    public void removeAllAppenders()

  Removes and closes all attached appenders.

  Specified by:
    `removeAllAppenders` in interface `AppenderAttachable`

### removeAppender

    public void removeAppender(Appender appender)

  Removes an appender.

  Specified by:
    `removeAppender` in interface `AppenderAttachable`
  Parameters:
    `appender` - appender to remove.

### removeAppender

    public void removeAppender(String name)

  Remove appender by name.

  Specified by:
    `removeAppender` in interface `AppenderAttachable`
  Parameters:
    `name` - name.

### setRewritePolicy

    public void setRewritePolicy(RewritePolicy rewritePolicy)

### parseUnrecognizedElement

    public boolean parseUnrecognizedElement(Element element,
                                            Properties props)
                                     throws 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:
    `Exception` - throw an exception to prevent activation of the configured object.

Copyright © 1999-2012 Apache Software Foundation. All Rights Reserved.