dain 2004/02/12 23:22:22
Modified: modules/deployment/src/java/org/apache/geronimo/deployment Deployer.java modules/kernel/src/java/org/apache/geronimo Geronimo.java modules/kernel/src/java/org/apache/geronimo/kernel/log GeronimoLogFactory.java modules/system/src/java/org/apache/geronimo/system/repository ReadOnlyRepository.java Added: modules/kernel/src/java/org/apache/geronimo/kernel/log BootstrapJdk14Log.java BootstrapLog4jLog.java BootstrapLogFactory.java GeronimoLogging.java Log: Logging fixes * Logging now uses a Bootstrap log factory which selects either the geronimo BootstrapLog4jLog or BootstrapJdk14Log based on availability of the log4j classes * GeronimoLog now keeps instances and delegate log factory in a static fields as commons-logging likes to create a factory per classloader * Added GeronimoLogging, which is used to install our logging code * Changed Geronimo.java and Deployer.java to use the new GeronimpLogging initialization code Revision Changes Path 1.2 +3 -4 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java Index: Deployer.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/Deployer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Deployer.java 12 Feb 2004 18:27:39 -0000 1.1 +++ Deployer.java 13 Feb 2004 07:22:22 -0000 1.2 @@ -70,14 +70,13 @@ import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; -import org.apache.commons.logging.LogFactory; import org.apache.geronimo.gbean.GBeanInfo; import org.apache.geronimo.gbean.GBeanInfoFactory; import org.apache.geronimo.gbean.GConstructorInfo; import org.apache.geronimo.gbean.GOperationInfo; import org.apache.geronimo.gbean.GReferenceInfo; import org.apache.geronimo.kernel.Kernel; -import org.apache.geronimo.kernel.log.GeronimoLogFactory; +import org.apache.geronimo.kernel.log.GeronimoLogging; import org.apache.geronimo.kernel.config.LocalConfigStore; import org.apache.xmlbeans.SchemaTypeLoader; import org.apache.xmlbeans.XmlBeans; @@ -92,7 +91,7 @@ public class Deployer { static { // This MUST be done before the first log is acquired - System.setProperty(LogFactory.FACTORY_PROPERTY, GeronimoLogFactory.class.getName()); + GeronimoLogging.initialize(GeronimoLogging.ERROR); } public static final URI DEFAULT_CONFIG = URI.create("org/apache/geronimo/J2EEDeployer"); 1.9 +3 -5 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/Geronimo.java Index: Geronimo.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/Geronimo.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- Geronimo.java 12 Feb 2004 18:23:58 -0000 1.8 +++ Geronimo.java 13 Feb 2004 07:22:22 -0000 1.9 @@ -63,10 +63,9 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.logging.LogFactory; import org.apache.geronimo.kernel.Kernel; import org.apache.geronimo.kernel.config.LocalConfigStore; -import org.apache.geronimo.kernel.log.GeronimoLogFactory; +import org.apache.geronimo.kernel.log.GeronimoLogging; /** * @version $Revision$ $Date$ @@ -74,7 +73,7 @@ public class Geronimo { static { // This MUST be done before the first log is acquired - System.setProperty(LogFactory.FACTORY_PROPERTY, GeronimoLogFactory.class.getName()); + GeronimoLogging.initialize(GeronimoLogging.INFO); } private Geronimo() { @@ -112,7 +111,6 @@ } configs.add(configID); } - final Kernel kernel; File storeDir = new File(storeDirName); if (storeDir.exists()) { 1.2 +76 -39 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/log/GeronimoLogFactory.java Index: GeronimoLogFactory.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/log/GeronimoLogFactory.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- GeronimoLogFactory.java 11 Feb 2004 03:14:11 -0000 1.1 +++ GeronimoLogFactory.java 13 Feb 2004 07:22:22 -0000 1.2 @@ -59,81 +59,118 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogConfigurationException; import org.apache.commons.logging.LogFactory; -import org.apache.commons.logging.impl.LogFactoryImpl; /** * @version $Revision$ $Date$ */ public class GeronimoLogFactory extends LogFactory { - private LogFactory logFactory = new LogFactoryImpl(); - private final HashMap instances = new HashMap(); + private final static Object factoryLock = new Object(); + // todo this should use weak references + private static final HashMap instancesByClassLoader = new HashMap(); - public synchronized LogFactory getLogFactory() { - return logFactory; + private static LogFactory logFactory = new BootstrapLogFactory(); + + public GeronimoLogFactory() { + System.out.println("Created Geronimo log factory"); } - public void setLogFactory(LogFactory logFactory) { - Set logs; - synchronized (this) { - this.logFactory = logFactory; - logs = new HashSet(instances.values()); + public LogFactory getLogFactory() { + synchronized (factoryLock) { + return logFactory; } + } + + public void setLogFactory(LogFactory logFactory) { + // change the log factory + this.logFactory = logFactory; + // update all known logs to use instances of the new factory + Set logs = getInstances(); for (Iterator iterator = logs.iterator(); iterator.hasNext();) { GeronimoLog log = (GeronimoLog) iterator.next(); log.setLog(logFactory.getInstance(log.getName())); } } - public synchronized Set getInstances() { - return new HashSet(instances.values()); + public Set getInstances() { + synchronized (factoryLock) { + Set logs = new HashSet(); + for (Iterator iterator = instancesByClassLoader.values().iterator(); iterator.hasNext();) { + Map instanceMap = ((Map) iterator.next()); + logs.addAll(instanceMap.values()); + + } + return logs; + } } - public synchronized Log getInstance(Class clazz) throws LogConfigurationException { - return getInstance(clazz.getName()); + public Log getInstance(Class clazz) throws LogConfigurationException { + synchronized (factoryLock) { + return getInstance(clazz.getName()); + } } - public synchronized Log getInstance(String name) throws LogConfigurationException { - ClassLoader oldCL = Thread.currentThread().getContextClassLoader(); - try { - Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); - Log instance = (Log) instances.get(name); - if (instance == null) { - instance = new GeronimoLog(name, logFactory.getInstance(name)); - instances.put(name, instance); + public Log getInstance(String name) throws LogConfigurationException { + synchronized (factoryLock) { + // get the instances for the context classloader + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + Map instances = (Map) instancesByClassLoader.get(contextClassLoader); + if(instances == null) { + instances = new HashMap(); + instancesByClassLoader.put(contextClassLoader, instances); } - return instance; - } finally { - Thread.currentThread().setContextClassLoader(oldCL); + + // get the log + Log log = (Log) instances.get(name); + if (log == null) { + log = new GeronimoLog(name, logFactory.getInstance(name)); + instances.put(name, log); + } + return log; } } - public synchronized void release() { - for (Iterator iterator = instances.values().iterator(); iterator.hasNext();) { - GeronimoLog log = (GeronimoLog) iterator.next(); - log.setLog(null); + public void release() { + synchronized (factoryLock) { + for (Iterator maps = instancesByClassLoader.values().iterator(); maps.hasNext();) { + Map instances = (Map) maps.next(); + for (Iterator logs = instances.values().iterator(); logs.hasNext();) { + GeronimoLog log = (GeronimoLog) logs.next(); + log.setLog(null); + + } + } + instancesByClassLoader.clear(); } - instances.clear(); } - public synchronized Object getAttribute(String name) { - return logFactory.getAttribute(name); + public Object getAttribute(String name) { + synchronized (factoryLock) { + return logFactory.getAttribute(name); + } } - public synchronized String[] getAttributeNames() { - return logFactory.getAttributeNames(); + public String[] getAttributeNames() { + synchronized (factoryLock) { + return logFactory.getAttributeNames(); + } } - public synchronized void removeAttribute(String name) { - logFactory.removeAttribute(name); + public void removeAttribute(String name) { + synchronized (factoryLock) { + logFactory.removeAttribute(name); + } } - public synchronized void setAttribute(String name, Object value) { - logFactory.setAttribute(name, value); + public void setAttribute(String name, Object value) { + synchronized (factoryLock) { + logFactory.setAttribute(name, value); + } } } 1.1 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/log/BootstrapJdk14Log.java Index: BootstrapJdk14Log.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * ==================================================================== */ package org.apache.geronimo.kernel.log; import java.util.logging.Logger; import java.util.logging.Level; import java.util.logging.Handler; import java.util.logging.ConsoleHandler; import org.apache.commons.logging.Log; /** * @version $Revision: 1.1 $ $Date: 2004/02/13 07:22:22 $ */ public class BootstrapJdk14Log implements Log { static { Logger root = Logger.getLogger(""); GeronimoLogging geronimoLevel = GeronimoLogging.getDefaultLevel(); Level javaLevel; if (geronimoLevel == GeronimoLogging.TRACE) { javaLevel = Level.FINEST; } else if (geronimoLevel == GeronimoLogging.DEBUG) { javaLevel = Level.FINE; } else if (geronimoLevel == GeronimoLogging.INFO) { javaLevel = Level.INFO; } else if (geronimoLevel == GeronimoLogging.WARN) { javaLevel = Level.WARNING; } else { javaLevel = Level.SEVERE; } // set the root level root.setLevel(javaLevel); // set the console handler level (if present) Handler[] handlers = root.getHandlers(); for (int index = 0; index < handlers.length; index++) { if (handlers[index] instanceof ConsoleHandler) { handlers[index].setLevel(javaLevel); } } } private Logger logger = null; public BootstrapJdk14Log(String name) { logger = Logger.getLogger(name); } private void log(Level level, String messge, Throwable throwable) { if (logger.isLoggable(level)) { // need to determine if caller class name and method StackTraceElement locations[] = new Throwable().getStackTrace(); // Caller will be the forth element String cname = "unknown"; String method = "unknown"; if (locations != null && locations.length > 3) { StackTraceElement caller = locations[3]; cname = caller.getClassName(); method = caller.getMethodName(); } if (throwable == null) { logger.logp(level, cname, method, messge); } else { logger.logp(level, cname, method, messge, throwable); } } } public void debug(Object message) { log(Level.FINE, String.valueOf(message), null); } public void debug(Object message, Throwable exception) { log(Level.FINE, String.valueOf(message), exception); } public void error(Object message) { log(Level.SEVERE, String.valueOf(message), null); } public void error(Object message, Throwable exception) { log(Level.SEVERE, String.valueOf(message), exception); } public void fatal(Object message) { log(Level.SEVERE, String.valueOf(message), null); } public void fatal(Object message, Throwable exception) { log(Level.SEVERE, String.valueOf(message), exception); } public Logger getLogger() { return this.logger; } public void info(Object message) { log(Level.INFO, String.valueOf(message), null); } public void info(Object message, Throwable exception) { log(Level.INFO, String.valueOf(message), exception); } public boolean isDebugEnabled() { return (logger.isLoggable(Level.FINE)); } public boolean isErrorEnabled() { return (logger.isLoggable(Level.SEVERE)); } public boolean isFatalEnabled() { return (logger.isLoggable(Level.SEVERE)); } public boolean isInfoEnabled() { return (logger.isLoggable(Level.INFO)); } public boolean isTraceEnabled() { return (logger.isLoggable(Level.FINEST)); } public boolean isWarnEnabled() { return (logger.isLoggable(Level.WARNING)); } public void trace(Object message) { log(Level.FINEST, String.valueOf(message), null); } public void trace(Object message, Throwable exception) { log(Level.FINEST, String.valueOf(message), exception); } public void warn(Object message) { log(Level.WARNING, String.valueOf(message), null); } public void warn(Object message, Throwable exception) { log(Level.WARNING, String.valueOf(message), exception); } } 1.1 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/log/BootstrapLog4jLog.java Index: BootstrapLog4jLog.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * ==================================================================== */ package org.apache.geronimo.kernel.log; import org.apache.commons.logging.Log; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.PatternLayout; /** * @version $Revision: 1.1 $ $Date: 2004/02/13 07:22:22 $ */ public class BootstrapLog4jLog implements Log { static { Logger root = Logger.getRootLogger(); root.addAppender(new ConsoleAppender(new PatternLayout("%d{ABSOLUTE} %-5p [%c{1}] %m%n"))); GeronimoLogging level = GeronimoLogging.getDefaultLevel(); if(level == null) { root.setLevel(Level.ERROR); } else if(level == GeronimoLogging.TRACE) { root.setLevel(Level.DEBUG); } else if(level == GeronimoLogging.DEBUG) { root.setLevel(Level.DEBUG); } else if(level == GeronimoLogging.INFO) { root.setLevel(Level.INFO); } else if(level == GeronimoLogging.WARN) { root.setLevel(Level.WARN); } else if(level == GeronimoLogging.ERROR) { root.setLevel(Level.ERROR); } else if(level == GeronimoLogging.FATAL) { root.setLevel(Level.FATAL); } } private static final String FQCN = BootstrapLog4jLog.class.getName(); private Logger logger; public BootstrapLog4jLog(String name) { logger = Logger.getLogger(name); } public boolean isTraceEnabled() { return logger.isEnabledFor(Level.DEBUG); } public void trace(Object message) { logger.log(FQCN, Level.DEBUG, message, null); } public void trace(Object message, Throwable throwable) { logger.log(FQCN, Level.DEBUG, message, throwable); } public boolean isDebugEnabled() { return logger.isEnabledFor(Level.DEBUG); } public void debug(Object message) { logger.log(FQCN, Level.DEBUG, message, null); } public void debug(Object message, Throwable throwable) { logger.log(FQCN, Level.DEBUG, message, throwable); } public boolean isInfoEnabled() { return logger.isEnabledFor(Level.INFO); } public void info(Object message) { logger.log(FQCN, Level.INFO, message, null); } public void info(Object message, Throwable throwable) { logger.log(FQCN, Level.INFO, message, throwable); } public boolean isWarnEnabled() { return logger.isEnabledFor(Level.WARN); } public void warn(Object message) { logger.log(FQCN, Level.WARN, message, null); } public void warn(Object message, Throwable throwable) { logger.log(FQCN, Level.WARN, message, throwable); } public boolean isErrorEnabled() { return logger.isEnabledFor(Level.ERROR); } public void error(Object message) { logger.log(FQCN, Level.ERROR, message, null); } public void error(Object message, Throwable throwable) { logger.log(FQCN, Level.ERROR, message, throwable); } public boolean isFatalEnabled() { return logger.isEnabledFor(Level.FATAL); } public void fatal(Object message) { logger.log(FQCN, Level.FATAL, message, null); } public void fatal(Object message, Throwable throwable) { logger.log(FQCN, Level.FATAL, message, throwable); } } 1.1 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/log/BootstrapLogFactory.java Index: BootstrapLogFactory.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * ==================================================================== */ package org.apache.geronimo.kernel.log; import org.apache.commons.logging.impl.LogFactoryImpl; /** * @version $Revision: 1.1 $ $Date: 2004/02/13 07:22:22 $ */ public class BootstrapLogFactory extends LogFactoryImpl { private String logClassName; protected String getLogClassName() { if (logClassName != null) { return logClassName; } if (isLog4JAvailable()) { logClassName = "org.apache.geronimo.kernel.log.BootstrapLog4jLog"; } else { logClassName = "org.apache.geronimo.kernel.log.BootstrapJdk14Log"; } return logClassName; } } 1.1 incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/kernel/log/GeronimoLogging.java Index: GeronimoLogging.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * ==================================================================== */ package org.apache.geronimo.kernel.log; import org.apache.commons.logging.LogFactory; /** * @version $Revision: 1.1 $ $Date: 2004/02/13 07:22:22 $ */ public class GeronimoLogging { public static final GeronimoLogging TRACE = new GeronimoLogging("TRACE"); public static final GeronimoLogging DEBUG = new GeronimoLogging("DEBUG"); public static final GeronimoLogging INFO = new GeronimoLogging("INFO"); public static final GeronimoLogging WARN = new GeronimoLogging("WARN"); public static final GeronimoLogging ERROR = new GeronimoLogging("ERROR"); public static final GeronimoLogging FATAL = new GeronimoLogging("FATAL"); private static boolean initialized = false; private static GeronimoLogging defaultLevel; /** * Initializes the logging system used by Geronimo. This MUST be called in * in the main class used to start the geronimo server. This method forces * commons logging to use GeronimoLogFacotry, starts the initial commons-logging * logging system, and forces mx4j to use commons logging. * * @param level */ public static void initialize(GeronimoLogging level) { if (!initialized) { defaultLevel = level; // force commons-logging to use our log factory System.setProperty(LogFactory.FACTORY_PROPERTY, GeronimoLogFactory.class.getName()); // force the log factory to initialize LogFactory.getLog(GeronimoLogging.class); // force mx4j to use commons logging // todo do this with reflection so mx4j is not required (this is important in JDK 1.5) mx4j.log.Log.redirectTo(new mx4j.log.CommonsLogger()); initialized = true; } } public static GeronimoLogging getDefaultLevel() { return defaultLevel; } private final String level; private GeronimoLogging(String level) { this.level = level; } public String toString() { return level; } public boolean equals(Object object) { return object == this; } } 1.2 +5 -2 incubator-geronimo/modules/system/src/java/org/apache/geronimo/system/repository/ReadOnlyRepository.java Index: ReadOnlyRepository.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/system/src/java/org/apache/geronimo/system/repository/ReadOnlyRepository.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ReadOnlyRepository.java 12 Feb 2004 18:12:52 -0000 1.1 +++ ReadOnlyRepository.java 13 Feb 2004 07:22:22 -0000 1.2 @@ -71,6 +71,8 @@ import org.apache.geronimo.gbean.WaitingException; import org.apache.geronimo.kernel.repository.Repository; import org.apache.geronimo.system.serverinfo.ServerInfo; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * @@ -78,6 +80,7 @@ * @version $Revision$ $Date$ */ public class ReadOnlyRepository implements Repository, GBean { + private static final Log log = LogFactory.getLog(ReadOnlyRepository.class); private final URI root; private final ServerInfo serverInfo; private URI rootURI; @@ -111,7 +114,7 @@ public void doStart() throws WaitingException, Exception { rootURI = serverInfo.resolve(root); - System.out.println("Repository root is "+rootURI); + log.info("Repository root is "+rootURI); } public void doStop() throws WaitingException, Exception {