From e35221a86afd24ee21b7b9d02db298a90ace1bc0 Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Fri, 31 Jan 2025 15:56:17 -0600 Subject: [PATCH] Improve how Equinox trace is disabled with LoggerAdmin Use EQUINOX.TRACE key to disable trace also with any value that is not LogLevel.TRACE. --- .../equinox/log/test/LogEquinoxTraceTest.java | 5 ++--- .../internal/log/ExtendedLogServiceFactory.java | 15 +++++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) 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);