diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogEquinoxTraceTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogEquinoxTraceTest.java index d8326cd347..d7c79b5656 100644 --- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogEquinoxTraceTest.java +++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogEquinoxTraceTest.java @@ -169,9 +169,8 @@ private void doTestEnableTrace(String loggerContextName) { logEntry.getLoggerName()); } - // remove all debug options which should disable debug trace - rootLogLevels.clear(); - rootLogLevels.put(Debug.EQUINOX_TRACE, LogLevel.TRACE); + // Setting the EQUINOX.TRACE to anything but trace should disable + rootLogLevels.put(Debug.EQUINOX_TRACE, LogLevel.AUDIT); rootContext.setLogLevels(rootLogLevels); assertFalse("Expected debug to be disabled.", debugOptions.isDebugEnabled()); assertEquals("Expected no debug Options.", 0, debugOptions.getOptions().size()); diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java index 6c80c15907..f7179a846f 100644 --- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java +++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/ExtendedLogServiceFactory.java @@ -251,18 +251,21 @@ private void enableEquinoxTrace(EquinoxLoggerContext systemBundleLoggerContext) } Map logLevels = systemBundleLoggerContext.getEffectiveLogLevels(); LogLevel equinoxTrace = logLevels.remove(Debug.EQUINOX_TRACE); - if (equinoxTrace != LogLevel.TRACE) { + if (equinoxTrace == null) { return; } DebugOptions debugOptions = getConfiguration().getDebugOptions(); Map options = debugOptions.getOptions(); options.clear(); boolean enable = false; - for (Entry level : logLevels.entrySet()) { - if (level.getValue() == LogLevel.TRACE - && !(EQUINOX_LOGGER_NAME.equals(level.getKey()) || PERF_LOGGER_NAME.equals(level.getKey()))) { - options.put(level.getKey(), Boolean.TRUE.toString()); - enable = true; + if (equinoxTrace == LogLevel.TRACE) { + // enable trace options if the EQUINOX.TRACE is set to trace + for (Entry level : logLevels.entrySet()) { + if (level.getValue() == LogLevel.TRACE && !(EQUINOX_LOGGER_NAME.equals(level.getKey()) + || PERF_LOGGER_NAME.equals(level.getKey()))) { + options.put(level.getKey(), Boolean.TRUE.toString()); + enable = true; + } } } debugOptions.setOptions(options);