View Javadoc

    1   /*
    2    * Copyright 2001-2004 The Apache Software Foundation.
    3    *
    4    * Licensed under the Apache License, Version 2.0 (the "License");
    5    * you may not use this file except in compliance with the License.
    6    * You may obtain a copy of the License at
    7    *
    8    *      http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16
    17  package org.apache.log4j;
    18
    19  import org.apache.log4j.spi.Filter;
    20  import org.apache.log4j.spi.ErrorHandler;
    21  import org.apache.log4j.spi.LoggingEvent;
    22
    23  /**
    24   * Implement this interface for your own strategies for outputting log
    25   * statements.
    26   *
    27   * @author Ceki G&uuml;lc&uuml;
    28   */
    29  public interface Appender {
    30
    31      /**
    32       * Add a filter to the end of the filter list.
    33       *
    34       * @since 0.9.0
    35       */
    36      void addFilter(Filter newFilter);
    37
    38      /**
    39       * Returns the head Filter. The Filters are organized in a linked list
    40       * and so all Filters on this Appender are available through the result.
    41       *
    42       * @return the head Filter or null, if no Filters are present
    43       * @since 1.1
    44       */
    45      public Filter getFilter();
    46
    47      /**
    48       * Clear the list of filters by removing all the filters in it.
    49       *
    50       * @since 0.9.0
    51       */
    52      public void clearFilters();
    53
    54      /**
    55       * Release any resources allocated within the appender such as file
    56       * handles, network connections, etc.
    57       * <p/>
    58       * <p>It is a programming error to append to a closed appender.
    59       *
    60       * @since 0.8.4
    61       */
    62      public void close();
    63
    64      /**
    65       * Log in <code>Appender</code> specific way. When appropriate,
    66       * Loggers will call the <code>doAppend</code> method of appender
    67       * implementations in order to log.
    68       */
    69      public void doAppend(LoggingEvent event);
    70
    71      /**
    72       * Get the name of this appender. The name uniquely identifies the
    73       * appender.
    74       */
    75      public String getName();
    76
    77      /**
    78       * Set the {@link ErrorHandler} for this appender.
    79       *
    80       * @since 0.9.0
    81       */
    82      public void setErrorHandler(ErrorHandler errorHandler);
    83
    84      /**
    85       * Returns the {@link ErrorHandler} for this appender.
    86       *
    87       * @since 1.1
    88       */
    89      public ErrorHandler getErrorHandler();
    90
    91      /**
    92       * Set the {@link Layout} for this appender.
    93       *
    94       * @since 0.8.1
    95       */
    96      public void setLayout(Layout layout);
    97
    98      /**
    99       * Returns this appenders layout.
    100      *
    101      * @since 1.1
    102      */
    103     public Layout getLayout();
    104
    105     /**
    106      * Set the name of this appender. The name is used by other
    107      * components to identify this appender.
    108      *
    109      * @since 0.8.1
    110      */
    111     public void setName(String name);
    112
    113     /**
    114      * Configurators call this method to determine if the appender
    115      * requires a layout. If this method returns <code>true</code>,
    116      * meaning that layout is required, then the configurator will
    117      * configure an layout using the configuration information at its
    118      * disposal.  If this method returns <code>false</code>, meaning that
    119      * a layout is not required, then layout configuration will be
    120      * skipped even if there is available layout configuration
    121      * information at the disposal of the configurator.
    122      * <p/>
    123      * <p>In the rather exceptional case, where the appender
    124      * implementation admits a layout but can also work without it, then
    125      * the appender should return <code>true</code>.
    126      *
    127      * @since 0.8.4
    128      */
    129     public boolean requiresLayout();
    130 }