Save This Page
Home » slf4j-1.5.5 » org.apache » log4j » helpers » [javadoc | source]
    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.helpers;
   19   
   20   import org.apache.log4j.spi.AppenderAttachable;
   21   import org.apache.log4j.spi.LoggingEvent;
   22   
   23   import org.apache.log4j.Appender;
   24   import java.util.Vector;
   25   import java.util.Enumeration;
   26   
   27   /**
   28      A straightforward implementation of the {@link AppenderAttachable}
   29      interface.
   30   
   31      @author Ceki Gülcü
   32      @since version 0.9.1 */
   33   public class AppenderAttachableImpl implements AppenderAttachable {
   34     
   35     /** Array of appenders. */
   36     protected Vector  appenderList;
   37   
   38     /**
   39        Attach an appender. If the appender is already in the list in
   40        won't be added again.
   41     */
   42     public
   43     void addAppender(Appender newAppender) {
   44       // Null values for newAppender parameter are strictly forbidden.
   45       if(newAppender == null)
   46         return;
   47       
   48       if(appenderList == null) {
   49         appenderList = new Vector(1);
   50       }
   51       if(!appenderList.contains(newAppender))
   52         appenderList.addElement(newAppender);
   53     }
   54   
   55     /**
   56        Call the <code>doAppend</code> method on all attached appenders.  */
   57     public
   58     int appendLoopOnAppenders(LoggingEvent event) {
   59       int size = 0;
   60       Appender appender;
   61   
   62       if(appenderList != null) {
   63         size = appenderList.size();
   64         for(int i = 0; i < size; i++) {
   65   	appender = (Appender) appenderList.elementAt(i);
   66   	appender.doAppend(event);
   67         }
   68       }    
   69       return size;
   70     }
   71   
   72   
   73     /**
   74        Get all attached appenders as an Enumeration. If there are no
   75        attached appenders <code>null</code> is returned.
   76        
   77        @return Enumeration An enumeration of attached appenders.
   78      */
   79     public
   80     Enumeration getAllAppenders() {
   81       if(appenderList == null)
   82         return null;
   83       else 
   84         return appenderList.elements();    
   85     }
   86   
   87     /**
   88        Look for an attached appender named as <code>name</code>.
   89   
   90        <p>Return the appender with that name if in the list. Return null
   91        otherwise.  
   92        
   93      */
   94     public
   95     Appender getAppender(String name) {
   96        if(appenderList == null || name == null)
   97         return null;
   98   
   99        int size = appenderList.size();
  100        Appender appender;
  101        for(int i = 0; i < size; i++) {
  102          appender = (Appender) appenderList.elementAt(i);
  103          if(name.equals(appender.getName()))
  104   	  return appender;
  105        }
  106        return null;    
  107     }
  108   
  109   
  110     /**
  111        Returns <code>true</code> if the specified appender is in the
  112        list of attached appenders, <code>false</code> otherwise.
  113   
  114        @since 1.2 */
  115     public 
  116     boolean isAttached(Appender appender) {
  117       if(appenderList == null || appender == null)
  118         return false;
  119   
  120        int size = appenderList.size();
  121        Appender a;
  122        for(int i = 0; i < size; i++) {
  123          a  = (Appender) appenderList.elementAt(i);
  124          if(a == appender)
  125   	  return true;
  126        }
  127        return false;    
  128     }
  129   
  130   
  131   
  132     /**
  133      * Remove and close all previously attached appenders.
  134      * */
  135     public
  136     void removeAllAppenders() {
  137       if(appenderList != null) {
  138         int len = appenderList.size();      
  139         for(int i = 0; i < len; i++) {
  140   	Appender a = (Appender) appenderList.elementAt(i);
  141   	a.close();
  142         }
  143         appenderList.removeAllElements();
  144         appenderList = null;      
  145       }
  146     }
  147   
  148   
  149     /**
  150        Remove the appender passed as parameter form the list of attached
  151        appenders.  */
  152     public
  153     void removeAppender(Appender appender) {
  154       if(appender == null || appenderList == null) 
  155         return;
  156       appenderList.removeElement(appender);    
  157     }
  158   
  159   
  160    /**
  161       Remove the appender with the name passed as parameter form the
  162       list of appenders.  
  163     */
  164     public
  165     void removeAppender(String name) {
  166       if(name == null || appenderList == null) return;
  167       int size = appenderList.size();
  168       for(int i = 0; i < size; i++) {
  169         if(name.equals(((Appender)appenderList.elementAt(i)).getName())) {
  170   	 appenderList.removeElementAt(i);
  171   	 break;
  172         }
  173       }
  174     }
  175   
  176   }

Save This Page
Home » slf4j-1.5.5 » org.apache » log4j » helpers » [javadoc | source]