Index: openide/util/src/org/netbeans/modules/openide/util/LoggerProvider.java =================================================================== RCS file: openide/util/src/org/netbeans/modules/openide/util/LoggerProvider.java diff -N openide/util/src/org/netbeans/modules/openide/util/LoggerProvider.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openide/util/src/org/netbeans/modules/openide/util/LoggerProvider.java 11 Jun 2007 20:41:14 -0000 @@ -0,0 +1,31 @@ +/* + * The contents of this file are subject to the terms of the Common Development + * and Distribution License (the License). You may not use this file except in + * compliance with the License. + * + * You can obtain a copy of the License at http://www.netbeans.org/cddl.html + * or http://www.netbeans.org/cddl.txt. + * + * When distributing Covered Code, include this CDDL Header Notice in each file + * and include the License file at http://www.netbeans.org/cddl.txt. + * If applicable, add the following below the CDDL Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * The Original Software is NetBeans. The Initial Developer of the Original + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun + * Microsystems, Inc. All Rights Reserved. + */ + +package org.netbeans.modules.openide.util; + +import java.util.logging.Logger; + +/** + * + * @author Andrei Badea + */ +public interface LoggerProvider { + + Logger getLoggerForModule(Class clazz); +} Index: openide/util/src/org/openide/util/Exceptions.java =================================================================== RCS file: /cvs/openide/util/src/org/openide/util/Exceptions.java,v retrieving revision 1.11 diff -u -r1.11 Exceptions.java --- openide/util/src/org/openide/util/Exceptions.java 6 Apr 2007 15:17:03 -0000 1.11 +++ openide/util/src/org/openide/util/Exceptions.java 11 Jun 2007 20:41:14 -0000 @@ -32,6 +32,7 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; +import org.netbeans.modules.openide.util.LoggerProvider; /** Useful utility and methods to work with exceptions as @@ -43,10 +44,32 @@ * @since 7.2 */ public final class Exceptions extends Object { + + private static final String LOC_MSG_PLACEHOLDER = "msg"; // NOI18N + + private static volatile LoggerProvider LOGGER_PROVIDER; + private Exceptions() { } - private static final String LOC_MSG_PLACEHOLDER = "msg"; // NOI18N + public static Logger getLogger(Class clazz) { + return getLoggerProvider().getLoggerForModule(clazz); + } + + private static LoggerProvider getLoggerProvider() { + if (LOGGER_PROVIDER == null) { + LoggerProvider provider = Lookup.getDefault().lookup(LoggerProvider.class); + if (provider == null) { + provider = new DefaultLoggerProvider(); + } + synchronized (Exceptions.class) { + if (LOGGER_PROVIDER == null) { + LOGGER_PROVIDER = provider; + } + } + } + return LOGGER_PROVIDER; + } /** Attaches additional message to given exception. This message will * be visible when one does e.printStackTrace(). @@ -274,4 +297,10 @@ super(s, i); } } // end of OwnLevel + private static final class DefaultLoggerProvider implements LoggerProvider { + + public Logger getLoggerForModule(Class clazz) { + return Logger.getLogger(clazz.getName()); + } + } // end of DefaultLoggerProvider } Index: core/startup/src/META-INF/services/org.netbeans.modules.openide.util.LoggerProvider =================================================================== RCS file: core/startup/src/META-INF/services/org.netbeans.modules.openide.util.LoggerProvider diff -N core/startup/src/META-INF/services/org.netbeans.modules.openide.util.LoggerProvider --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ core/startup/src/META-INF/services/org.netbeans.modules.openide.util.LoggerProvider 11 Jun 2007 20:41:15 -0000 @@ -0,0 +1 @@ +org.netbeans.core.startup.NbLoggerProvider Index: core/startup/src/org/netbeans/core/startup/NbLoggerProvider.java =================================================================== RCS file: core/startup/src/org/netbeans/core/startup/NbLoggerProvider.java diff -N core/startup/src/org/netbeans/core/startup/NbLoggerProvider.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ core/startup/src/org/netbeans/core/startup/NbLoggerProvider.java 11 Jun 2007 20:41:15 -0000 @@ -0,0 +1,46 @@ +/* + * The contents of this file are subject to the terms of the Common Development + * and Distribution License (the License). You may not use this file except in + * compliance with the License. + * + * You can obtain a copy of the License at http://www.netbeans.org/cddl.html + * or http://www.netbeans.org/cddl.txt. + * + * When distributing Covered Code, include this CDDL Header Notice in each file + * and include the License file at http://www.netbeans.org/cddl.txt. + * If applicable, add the following below the CDDL Header, with the fields + * enclosed by brackets [] replaced by your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * The Original Software is NetBeans. The Initial Developer of the Original + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun + * Microsystems, Inc. All Rights Reserved. + */ + +package org.netbeans.core.startup; + +import java.util.logging.Logger; +import org.netbeans.Util; +import org.netbeans.modules.openide.util.LoggerProvider; + +/** + * + * @author Andrei Badea + */ +public class NbLoggerProvider implements LoggerProvider { + + public NbLoggerProvider() { + } + + public Logger getLoggerForModule(Class clazz) { + ClassLoader cl = clazz.getClassLoader(); + String name; + if (cl instanceof Util.ModuleProvider) { + name = ((Util.ModuleProvider)cl).getModule().getCodeNameBase(); + } else { + name = clazz.getName(); + } + assert name != null; + return Logger.getLogger(name); + } +}