View Javadoc

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