Java 类org.apache.log4j.spi.AppenderAttachable 实例源码

项目:log4j-json-layout    文件:LogStashJsonLayout.java   
@SuppressWarnings("unchecked")
private Appender findLayoutAppender(Enumeration<? extends Appender> appenders) {
    if(appenders == null) {
        return null;
    }

    while (appenders.hasMoreElements()) {
        Appender appender = appenders.nextElement();
        // get the first appender with this layout instance and ignore others;
        // actually a single instance of this class is not intended to be used with multiple threads.
        if (appender.getLayout() == this) {
            return appender;
        }
        if (appender instanceof AppenderAttachable) {
            AppenderAttachable appenderContainer = (AppenderAttachable) appender;
            return findLayoutAppender(appenderContainer.getAllAppenders());
        }
    }
    return null;
}
项目:cacheonix-core    文件:Category.java   
/**
    Close all attached appenders implementing the AppenderAttachable
    interface.
    @since 1.0
 */
 synchronized
 void closeNestedAppenders() {
   Enumeration enumeration = this.getAllAppenders();
   if(enumeration != null) {
     while(enumeration.hasMoreElements()) {
Appender a = (Appender) enumeration.nextElement();
if(a instanceof AppenderAttachable) {
  a.close();
}
     }
   }
 }
项目:daq-eclipse    文件:Category.java   
/**
    Close all attached appenders implementing the AppenderAttachable
    interface.
    @since 1.0
 */
 synchronized
 void closeNestedAppenders() {
   Enumeration enumeration = this.getAllAppenders();
   if(enumeration != null) {
     while(enumeration.hasMoreElements()) {
Appender a = (Appender) enumeration.nextElement();
if(a instanceof AppenderAttachable) {
  a.close();
}
     }
   }
 }
项目:nabs    文件:Category.java   
/**
    Close all attached appenders implementing the AppenderAttachable
    interface.
    @since 1.0
 */
 synchronized
 void closeNestedAppenders() {
   Enumeration enumeration = this.getAllAppenders();
   if(enumeration != null) {
     while(enumeration.hasMoreElements()) {
Appender a = (Appender) enumeration.nextElement();
if(a instanceof AppenderAttachable) {
  a.close();
}
     }
   }
 }
项目:cacheonix-core    文件:DOMConfigurator.java   
/**
    Used internally to parse an appender element.
  */
 protected
 Appender parseAppender (Element appenderElement) {
   String className = subst(appenderElement.getAttribute(CLASS_ATTR));
   LogLog.debug("Class name: [" + className+']');    
   try {
     Object instance    = Loader.loadClass(className).newInstance();
     Appender appender  = (Appender)instance;
     PropertySetter propSetter = new PropertySetter(appender);

     appender.setName(subst(appenderElement.getAttribute(NAME_ATTR)));

     NodeList children  = appenderElement.getChildNodes();
     final int length   = children.getLength();

     for (int loop = 0; loop < length; loop++) {
Node currentNode = children.item(loop);

/* We're only interested in Elements */
if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
  Element currentElement = (Element)currentNode;

  // Parse appender parameters 
  if (currentElement.getTagName().equals(PARAM_TAG)) {
           setParameter(currentElement, propSetter);
  }
  // Set appender layout
  else if (currentElement.getTagName().equals(LAYOUT_TAG)) {
    appender.setLayout(parseLayout(currentElement));
  }
  // Add filters
  else if (currentElement.getTagName().equals(FILTER_TAG)) {
    parseFilters(currentElement, appender);
  }
  else if (currentElement.getTagName().equals(ERROR_HANDLER_TAG)) {
    parseErrorHandler(currentElement, appender);
  }
  else if (currentElement.getTagName().equals(APPENDER_REF_TAG)) {
    String refName = subst(currentElement.getAttribute(REF_ATTR));
    if(appender instanceof AppenderAttachable) {
      AppenderAttachable aa = (AppenderAttachable) appender;
      LogLog.debug("Attaching appender named ["+ refName+
           "] to appender named ["+ appender.getName()+"].");
      aa.addAppender(findAppenderByReference(currentElement));
    } else {
      LogLog.error("Requesting attachment of appender named ["+
           refName+ "] to appender named ["+ appender.getName()+
               "] which does not implement org.apache.log4j.spi.AppenderAttachable.");
    }
  } else {
         parseUnrecognizedElement(instance, currentElement, props);
     }
}
     }
     propSetter.activate();
     return appender;
   }
   /* Yes, it's ugly.  But all of these exceptions point to the same
      problem: we can't create an Appender */
   catch (Exception oops) {
     LogLog.error("Could not create an Appender. Reported error follows.",
       oops);
     return null;
   }
 }
项目:daq-eclipse    文件:DOMConfigurator.java   
/**
    Used internally to parse an appender element.
  */
 protected
 Appender parseAppender (Element appenderElement) {
   String className = subst(appenderElement.getAttribute(CLASS_ATTR));
   LogLog.debug("Class name: [" + className+']');    
   try {
     Object instance    = Loader.loadClass(className).newInstance();
     Appender appender  = (Appender)instance;
     PropertySetter propSetter = new PropertySetter(appender);

     appender.setName(subst(appenderElement.getAttribute(NAME_ATTR)));

     NodeList children  = appenderElement.getChildNodes();
     final int length   = children.getLength();

     for (int loop = 0; loop < length; loop++) {
Node currentNode = children.item(loop);

/* We're only interested in Elements */
if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
  Element currentElement = (Element)currentNode;

  // Parse appender parameters 
  if (currentElement.getTagName().equals(PARAM_TAG)) {
           setParameter(currentElement, propSetter);
  }
  // Set appender layout
  else if (currentElement.getTagName().equals(LAYOUT_TAG)) {
    appender.setLayout(parseLayout(currentElement));
  }
  // Add filters
  else if (currentElement.getTagName().equals(FILTER_TAG)) {
    parseFilters(currentElement, appender);
  }
  else if (currentElement.getTagName().equals(ERROR_HANDLER_TAG)) {
    parseErrorHandler(currentElement, appender);
  }
  else if (currentElement.getTagName().equals(APPENDER_REF_TAG)) {
    String refName = subst(currentElement.getAttribute(REF_ATTR));
    if(appender instanceof AppenderAttachable) {
      AppenderAttachable aa = (AppenderAttachable) appender;
      LogLog.debug("Attaching appender named ["+ refName+
           "] to appender named ["+ appender.getName()+"].");
      aa.addAppender(findAppenderByReference(currentElement));
    } else {
      LogLog.error("Requesting attachment of appender named ["+
           refName+ "] to appender named ["+ appender.getName()+
               "] which does not implement org.apache.log4j.spi.AppenderAttachable.");
    }
  } else {
         parseUnrecognizedElement(instance, currentElement, props);
     }
}
     }
     propSetter.activate();
     return appender;
   }
   /* Yes, it's ugly.  But all of these exceptions point to the same
      problem: we can't create an Appender */
   catch (Exception oops) {
       if (oops instanceof InterruptedException || oops instanceof InterruptedIOException) {
           Thread.currentThread().interrupt();
       }
     LogLog.error("Could not create an Appender. Reported error follows.",
       oops);
     return null;
   }
 }