Author: sahoo Date: Thu Oct 14 18:24:11 2010 New Revision: 1022638 URL: http://svn.apache.org/viewvc?rev=1022638&view=rev Log: FELIX-2655: Make log level configurable
Modified: felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java Modified: felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java URL: http://svn.apache.org/viewvc/felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java?rev=1022638&r1=1022637&r2=1022638&view=diff ============================================================================== --- felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java (original) +++ felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java Thu Oct 14 18:24:11 2010 @@ -107,6 +107,7 @@ public class Configuration static final String PROP_TIMEOUT = "org.apache.felix.eventadmin.Timeout"; static final String PROP_REQUIRE_TOPIC = "org.apache.felix.eventadmin.RequireTopic"; static final String PROP_IGNORE_TIMEOUT = "org.apache.felix.eventadmin.IgnoreTimeout"; + static final String PROP_LOG_LEVEL = "org.apache.felix.eventadmin.LogLevel"; /** The bundle context. */ private final BundleContext m_bundleContext; @@ -121,6 +122,8 @@ public class Configuration private String[] m_ignoreTimeout; + private int m_logLevel; + // The thread pool used - this is a member because we need to close it on stop private volatile DefaultThreadPool m_sync_pool; @@ -250,6 +253,10 @@ public class Configuration m_ignoreTimeout[i] = st.nextToken(); } } + m_logLevel = getIntProperty(PROP_LOG_LEVEL, + m_bundleContext.getProperty(PROP_LOG_LEVEL), + LogWrapper.LOG_WARNING, // default log level is WARNING + LogWrapper.LOG_ERROR); } else { @@ -272,6 +279,10 @@ public class Configuration LogWrapper.getLogger().log(LogWrapper.LOG_WARNING, "Value for property: " + PROP_IGNORE_TIMEOUT + " is neither a string nor a string array - Using default"); } + m_logLevel = getIntProperty(PROP_LOG_LEVEL, + config.get(PROP_LOG_LEVEL), + LogWrapper.LOG_WARNING, // default log level is WARNING + LogWrapper.LOG_ERROR); } // a timeout less or equals to 100 means : disable timeout if ( m_timeout <= 100 ) @@ -282,6 +293,9 @@ public class Configuration private void startOrUpdate() { + LogWrapper.getLogger().setLogLevel(m_logLevel); + LogWrapper.getLogger().log(LogWrapper.LOG_DEBUG, + PROP_LOG_LEVEL + "=" + m_logLevel); LogWrapper.getLogger().log(LogWrapper.LOG_DEBUG, PROP_CACHE_SIZE + "=" + m_cacheSize); LogWrapper.getLogger().log(LogWrapper.LOG_DEBUG, Modified: felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java URL: http://svn.apache.org/viewvc/felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java?rev=1022638&r1=1022637&r2=1022638&view=diff ============================================================================== --- felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java (original) +++ felix/trunk/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/util/LogWrapper.java Thu Oct 14 18:24:11 2010 @@ -43,6 +43,10 @@ import org.osgi.framework.ServiceReferen * use it if present. Additionally, all log methods prefix the log message with * <tt>EventAdmin: </tt>. * + * There is one difference in behavior from the standard OSGi LogService. + * This logger has a {...@link #m_logLevel} property which decides what messages + * get logged. + * * @see org.osgi.service.log.LogService * * @author <a href="mailto:d...@felix.apache.org">Felix Project Team</a> @@ -88,6 +92,15 @@ public class LogWrapper private BundleContext m_context; private ServiceListener m_logServiceListener; + + /** + * Current log level. Message with log level less than or equal to + * current log level will be logged. + * The default value is {...@link #LOG_WARNING} + * + * @see #setLogLevel(int) + */ + private int m_logLevel = LOG_WARNING; /* * A thread save variant of the double checked locking singleton. */ @@ -230,6 +243,11 @@ public class LogWrapper // The method will remove any unregistered service reference as well. synchronized(m_loggerRefs) { + if (level > m_logLevel) + { + return; // don't log + } + final String logMsg = "EventAdmin: " + msg; if (!m_loggerRefs.isEmpty()) @@ -277,6 +295,11 @@ public class LogWrapper // The method will remove any unregistered service reference as well. synchronized(m_loggerRefs) { + if (level > m_logLevel) + { + return; // don't log + } + final String logMsg = "EventAdmin: " + msg; if (!m_loggerRefs.isEmpty()) @@ -324,6 +347,11 @@ public class LogWrapper // The method will remove any unregistered service reference as well. synchronized(m_loggerRefs) { + if (level > m_logLevel) + { + return; // don't log + } + final String logMsg = "EventAdmin: " + msg; if (!m_loggerRefs.isEmpty()) @@ -373,6 +401,11 @@ public class LogWrapper // The method will remove any unregistered service reference as well. synchronized(m_loggerRefs) { + if (level > m_logLevel) + { + return; // don't log + } + final String logMsg = "EventAdmin: " + msg; if (!m_loggerRefs.isEmpty()) @@ -446,4 +479,30 @@ public class LogWrapper System.out.println("UNKNOWN[" + level + "]: " + s); } } + + /** + * Change the current log level. Log level decides what messages gets + * logged. Any message with a log level higher than the currently set + * log level is not logged. + * + * @param logLevel new log level + */ + public void setLogLevel(int logLevel) + { + synchronized (m_loggerRefs) + { + m_logLevel = logLevel; + } + } + + /** + * @return current log level. + */ + public int getLogLevel() + { + synchronized (m_loggerRefs) + { + return m_logLevel; + } + } }