• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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ülcü
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      */
addFilter(Filter newFilter)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      */
getFilter()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      */
clearFilters()52     public void clearFilters();
53 
54     /**
55      * Release any resources allocated within the appender such as file
56      * handles, network connections, etc.
57      *
58      * <p>It is a programming error to append to a closed appender.
59      *
60      * @since 0.8.4
61      */
close()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      */
doAppend(LoggingEvent event)69     public void doAppend(LoggingEvent event);
70 
71     /**
72      * Get the name of this appender. The name uniquely identifies the
73      * appender.
74      */
getName()75     public String getName();
76 
77     /**
78      * Set the {@link ErrorHandler} for this appender.
79      *
80      * @since 0.9.0
81      */
setErrorHandler(ErrorHandler errorHandler)82     public void setErrorHandler(ErrorHandler errorHandler);
83 
84     /**
85      * Returns the {@link ErrorHandler} for this appender.
86      *
87      * @since 1.1
88      */
getErrorHandler()89     public ErrorHandler getErrorHandler();
90 
91     /**
92      * Set the {@link Layout} for this appender.
93      *
94      * @since 0.8.1
95      */
setLayout(Layout layout)96     public void setLayout(Layout layout);
97 
98     /**
99      * Returns this appenders layout.
100      *
101      * @since 1.1
102      */
getLayout()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      */
setName(String name)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 a 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      *
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      */
requiresLayout()129     public boolean requiresLayout();
130 }
131