/** * 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()); } }