From 83f9ff3caa186a73f1fc99f7c6d041aa93496c15 Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Wed, 25 Mar 2026 18:34:33 -0400 Subject: [PATCH 1/2] fix: don't let `SplitLogManager` do anything if it's not the manager --- .../calib/utils/DatabaseConstantProvider.java | 2 +- .../org/jlab/logging/SplitLogManager.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/calib/utils/DatabaseConstantProvider.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/calib/utils/DatabaseConstantProvider.java index 0505a2204a..7f7dcd01b1 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/calib/utils/DatabaseConstantProvider.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/calib/utils/DatabaseConstantProvider.java @@ -148,7 +148,7 @@ private void initialize(String address){ LOGGER.log(Level.INFO, String.format("[DB] ---> open %s | %s | %s | %s", runNumber, variation, databaseDate, address)); - provider.connect(); + provider.connect(); // FIXME: this function call resets log levels, e.g. of jminuit if(provider.isConnected()){ LOGGER.log(Level.FINE,"[DB] ---> database connection : success"); diff --git a/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java index 8ade3eba96..a9985b113f 100644 --- a/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java +++ b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java @@ -10,6 +10,9 @@ */ public class SplitLogManager extends LogManager { + /** whether or not this manager is managing */ + private static final boolean isManaging = SplitLogManager.class.getName().equals(System.getProperty("java.util.logging.manager")); + /** * create a new {@link Logger} instance * @param name the name of the logger @@ -17,6 +20,7 @@ public class SplitLogManager extends LogManager { */ @Override public Logger getLogger(String name) { + warnIfNotManaging("getLogger"); Logger logger = super.getLogger(name); if(logger != null) configureHandlers(logger, true); @@ -30,6 +34,7 @@ public Logger getLogger(String name) { */ @Override public synchronized boolean addLogger(Logger logger) { + warnIfNotManaging("addLogger"); boolean added = super.addLogger(logger); if(added) configureHandlers(logger, true); @@ -43,6 +48,10 @@ public synchronized boolean addLogger(Logger logger) { */ public static void configureHandlers(Logger logger, boolean includePrefix) { + // do nothing, if `SplitLogManager` is not the log manager + // if(!isManaging) + // return; + // clear handlers logger.setUseParentHandlers(false); for(var handler : logger.getHandlers()) @@ -121,9 +130,21 @@ else if(SplitLogManagerConfig.INSTANCE.defaultLevelWasSet()) * @param level the {@code Level} to apply */ public static void configureLevel(Logger logger, Level level) { + // if(!isManaging) + // return; + warnIfNotManaging("configureLevel"); logger.setLevel(level); for(var handler : logger.getHandlers()) handler.setLevel(level); } + /** + * warn, if this log manager is not the manager + * @param src the source of the warning, such as a function name + */ + private static void warnIfNotManaging(String src) { + if(!isManaging) + System.err.println("WARNING: SplitLogManager is not the LogManager, but its '" + src + "' was called"); + } + } From ab774c90570078ee7185121e0a2621323ab31427 Mon Sep 17 00:00:00 2001 From: Christopher Dilks Date: Wed, 25 Mar 2026 18:37:40 -0400 Subject: [PATCH 2/2] fix: apply it --- .../src/main/java/org/jlab/logging/SplitLogManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java index a9985b113f..8b6340bdfe 100644 --- a/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java +++ b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogManager.java @@ -49,8 +49,8 @@ public synchronized boolean addLogger(Logger logger) { public static void configureHandlers(Logger logger, boolean includePrefix) { // do nothing, if `SplitLogManager` is not the log manager - // if(!isManaging) - // return; + if(!isManaging) + return; // clear handlers logger.setUseParentHandlers(false); @@ -130,8 +130,8 @@ else if(SplitLogManagerConfig.INSTANCE.defaultLevelWasSet()) * @param level the {@code Level} to apply */ public static void configureLevel(Logger logger, Level level) { - // if(!isManaging) - // return; + if(!isManaging) + return; warnIfNotManaging("configureLevel"); logger.setLevel(level); for(var handler : logger.getHandlers())