Index: java/util/logging/LogManager.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/logging/LogManager.java,v retrieving revision 1.14 diff -u -r1.14 LogManager.java --- java/util/logging/LogManager.java 2 Jul 2005 20:32:44 -0000 1.14 +++ java/util/logging/LogManager.java 13 Jul 2005 18:43:41 -0000 @@ -443,6 +443,7 @@ { logger = (Logger) ref.get(); + logger.resetLogger(); if (logger == null) iter.remove(); else if (logger != rootLogger) @@ -451,6 +452,7 @@ } rootLogger.setLevel(Level.INFO); + rootLogger.resetLogger(); } /** @@ -513,6 +515,7 @@ checkAccess(); newProperties = new Properties(); newProperties.load(inputStream); + reset(); this.properties = newProperties; keys = newProperties.propertyNames(); @@ -534,7 +537,7 @@ String handlerName = tokenizer.nextToken(); try { - Class handlerClass = Class.forName(handlerName); + Class handlerClass = ClassLoader.getSystemClassLoader().loadClass(handlerName); getLogger("").addHandler((Handler) handlerClass .newInstance()); } Index: java/util/logging/Logger.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/logging/Logger.java,v retrieving revision 1.9 diff -u -r1.9 Logger.java --- java/util/logging/Logger.java 2 Jul 2005 20:32:44 -0000 1.9 +++ java/util/logging/Logger.java 13 Jul 2005 18:43:41 -0000 @@ -1177,4 +1177,17 @@ return stackTrace[index]; } + /** + * Reset and close handlers attached to this logger. This function is package + * private because it must only be avaiable to the LogManager. + */ + void resetLogger() + { + for (int i = 0; i < handlers.length; i++) + { + handlers[i].close(); + handlerList.remove(handlers[i]); + } + handlers = getHandlers(); + } }