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 java.util.Vector;
21  import org.apache.log4j.spi.LoggingEvent;
22  
23  /**
24     An appender that appends logging events to a vector.
25     @author Ceki  Gülcü
26  */
27  public class VectorAppender extends AppenderSkeleton {
28    public Vector vector;
29  
30    long delay = 0;
31    
32    public VectorAppender() {
33      super(true);
34      vector = new Vector();
35    }
36  
37  
38    public void append(LoggingEvent event) {
39      if(delay > 0) {
40        try {
41          Thread.sleep(delay);
42        } catch (Exception e) {
43        }
44      }
45  
46      vector.addElement(event);
47    }
48  
49    /**
50     * Returns a vector of {@link LoggingEvent}.
51     * @return a vector of {@link LoggingEvent}.
52     */
53    public Vector getVector() {
54      return vector;
55    }
56  
57    public synchronized void close() {
58      if (this.closed) {
59        return;
60      }
61  
62      this.closed = true;
63    }
64  
65    public boolean isClosed() {
66      return closed;
67    }
68  
69    public boolean requiresLayout() {
70      return false;
71    }
72    
73    /**
74     * Returns a delay to log.
75     * @return delay to log
76     */
77    public long getDelay() {
78      return delay;
79    }
80  
81    /**
82     * Sets a delay to log.
83     * @param delay delay to log
84     */  
85    public void setDelay(long delay) {
86      this.delay = delay;
87    }
88  
89  }