/**
  * Handle notification of the creation of a new classloader.
  *
  * @param logger the logging channel
  * @param label the classloader label
  * @param category the classloader category
  * @param classloader the new classloader to report
  */
 private static void classloaderConstructed(
     Logger logger, String label, Category category, ClassLoader classloader) {
   if (logger.isTraceEnabled()) {
     int id = System.identityHashCode(classloader);
     StringBuffer buffer = new StringBuffer();
     buffer.append("new ");
     buffer.append(category.toString());
     buffer.append(" classloader for " + label);
     buffer.append("\n           id: " + id);
     ClassLoader parent = classloader.getParent();
     if (null != parent) {
       int pid = System.identityHashCode(parent);
       buffer.append("\n      extends: " + pid);
     }
     if (classloader instanceof URLClassLoader) {
       URLClassLoader loader = (URLClassLoader) classloader;
       URL[] urls = loader.getURLs();
       if (urls.length == 1) {
         buffer.append("\n     contains: 1 entry");
       } else {
         buffer.append("\n     contains: " + urls.length + " entries");
       }
       for (int i = 0; i < urls.length; i++) {
         URL url = urls[i];
         buffer.append("\n         [" + (i + 1) + "] " + url.toString());
       }
     }
     logger.trace(buffer.toString());
   }
 }