diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/EventMerger.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/EventMerger.java index 7d9e62c623..7b64087430 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/EventMerger.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/EventMerger.java @@ -15,7 +15,6 @@ import org.jlab.io.hipo.HipoDataSource; import org.jlab.io.hipo.HipoDataSync; import org.jlab.jnp.hipo4.data.SchemaFactory; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.benchmark.ProgressPrintout; import org.jlab.utils.options.OptionParser; import org.jlab.utils.system.ClasUtilsFile; @@ -346,8 +345,6 @@ private boolean mergeEvents(DataEvent event, int scale) { public static void main(String[] args) { - DefaultLogger.debug(); - OptionParser parser = new OptionParser("bg-merger"); parser.addRequired("-o" ,"merged file"); parser.addRequired("-i" ,"signal event file"); @@ -418,4 +415,4 @@ public static void main(String[] args) { } -} \ No newline at end of file +} diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerFilter.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerFilter.java index c2b4073b19..e7465408cb 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerFilter.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerFilter.java @@ -6,7 +6,6 @@ import org.jlab.jnp.hipo4.io.HipoReader; import org.jlab.jnp.hipo4.io.HipoWriterSorted; import org.jlab.jnp.utils.json.JsonObject; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.benchmark.ProgressPrintout; import org.jlab.utils.options.OptionParser; import org.jlab.utils.system.ClasUtilsFile; @@ -141,8 +140,6 @@ public static long readTriggerMask(String mask) { public static void main(String[] args){ - DefaultLogger.debug(); - OptionParser parser = new OptionParser("trigger-filter"); parser.addRequired("-o" ,"output file"); parser.addRequired("-b" ,"trigger bit mask (e.g. 0x0000008000000000 to select the FC trigger"); diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerSplit.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerSplit.java index 388120b731..56e700b242 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerSplit.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/eventmerger/RandomTriggerSplit.java @@ -3,7 +3,6 @@ import org.jlab.jnp.hipo4.data.*; import org.jlab.jnp.hipo4.io.HipoReader; import org.jlab.jnp.hipo4.io.HipoWriterSorted; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.benchmark.ProgressPrintout; import org.jlab.utils.options.OptionParser; import org.jlab.utils.system.ClasUtilsFile; @@ -37,8 +36,6 @@ private HipoWriterSorted openOutputFile(String outputfile){ public static void main(String[] args){ - DefaultLogger.debug(); - OptionParser parser = new OptionParser("trigger-splitter"); parser.addOption("-o" ,"", "output file prefix"); parser.addOption("-n" ,"-1", "maximum number of events to process"); diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java index 91e53d2e45..f5f4ca1cee 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Processor.java @@ -8,7 +8,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.jlab.logging.DefaultLogger; import org.jlab.jnp.hipo4.data.Bank; import org.jlab.jnp.hipo4.data.Event; @@ -223,7 +222,6 @@ private static void replace(Map files) { } public static void main(String args[]) { - DefaultLogger.debug(); Processor p = new Processor(System.getenv("HOME")+"/tmp","r*.hipo",false,false); } diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java index 5ac8763c65..eb93cc67d6 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java @@ -36,13 +36,12 @@ public class Tag1ToEvent { public static void main(String[] args) { OptionParser parser = new OptionParser("postprocess"); - parser.useExternalLogger(); // necessary, since we have `LOGGER` here parser.addOption("-q","0","do beam charge and livetime (0/1=false/true)"); parser.addOption("-d","0","do delayed helicity (0/1=false/true)"); parser.addOption("-f","0","rebuild the HEL::flip banks (0/1=false/true)"); parser.addRequired("-o","output.hipo"); parser.parse(args); - SplitLogger.configureLevel(LOGGER, parser.getLogLevel()); + parser.syncLogLevel(LOGGER); if (parser.getInputList().isEmpty()) { parser.printUsage(); LOGGER.severe("No input file(s) specified."); diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryCreator.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryCreator.java index 0f5a25e052..f34b219b29 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryCreator.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryCreator.java @@ -7,7 +7,6 @@ import java.util.List; import org.jlab.io.base.DataEvent; import org.jlab.io.hipo.HipoDataSource; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.benchmark.ProgressPrintout; import org.jlab.utils.options.OptionParser; @@ -69,8 +68,6 @@ public void createDictionary(String inputFileName, String dictName, int maxEvent public static void main(String[] args) { - - DefaultLogger.debug(); OptionParser parser = new OptionParser("dict-maker"); parser.setRequiresInputList(false); @@ -130,4 +127,4 @@ public static void main(String[] args) { } -} \ No newline at end of file +} diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryGenerator.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryGenerator.java index 4f3c158539..d2ea228f20 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryGenerator.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryGenerator.java @@ -24,7 +24,6 @@ import org.jlab.geom.prim.Path3D; import org.jlab.geom.prim.Point3D; import org.jlab.geometry.prim.Line3d; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.benchmark.ProgressPrintout; import org.jlab.utils.options.OptionParser; @@ -339,8 +338,6 @@ private int swimtoLayer(int sector, int l, int sl, Swim sw) { public static void main(String[] args) { - DefaultLogger.debug(); - OptionParser parser = new OptionParser("dict-generator"); parser.setRequiresInputList(false); parser.addRequired("-torus", "torus scale"); diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryMerger.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryMerger.java index d7aeb8f276..f15378ff63 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryMerger.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryMerger.java @@ -7,7 +7,6 @@ import java.io.FileWriter; import java.io.IOException; import java.util.List; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.benchmark.ProgressPrintout; import org.jlab.utils.options.OptionParser; @@ -30,8 +29,6 @@ public boolean init() { public static void main(String[] args) { - - DefaultLogger.debug(); OptionParser parser = new OptionParser("dict-merger"); parser.addOption("-o","output.txt", "output dictionary file"); @@ -104,4 +101,4 @@ public static void main(String[] args) { } -} \ No newline at end of file +} diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryValidator.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryValidator.java index 98a5c8a82f..880fb2964f 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryValidator.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/roads/DictionaryValidator.java @@ -16,7 +16,6 @@ import org.jlab.groot.group.DataGroup; import org.jlab.io.base.DataEvent; import org.jlab.io.hipo.HipoDataSource; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.benchmark.ProgressPrintout; import org.jlab.utils.options.OptionParser; @@ -303,8 +302,6 @@ public void processFile(String fileName, int wireBin, int pcalBin, int sectorDep public static void main(String[] args) { - - DefaultLogger.debug(); OptionParser parser = new OptionParser("dict-validator"); parser.setRequiresInputList(false); @@ -401,4 +398,4 @@ public static void main(String[] args) { } -} \ No newline at end of file +} diff --git a/common-tools/clas-decay-tools/pom.xml b/common-tools/clas-decay-tools/pom.xml index 27957457ff..557ffe9ec2 100644 --- a/common-tools/clas-decay-tools/pom.xml +++ b/common-tools/clas-decay-tools/pom.xml @@ -45,11 +45,6 @@ clas-reco 13.4.1-SNAPSHOT - - org.jlab.clas - clas-logging - 13.4.1-SNAPSHOT - org.jlab.clas clas-utils diff --git a/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/AnalysisEngine.java b/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/AnalysisEngine.java index f49b5a1fc7..d357268c73 100644 --- a/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/AnalysisEngine.java +++ b/common-tools/clas-decay-tools/src/main/java/org/jlab/clas/decay/analysis/AnalysisEngine.java @@ -5,7 +5,6 @@ package org.jlab.clas.decay.analysis; import org.jlab.clas.swimtools.MagFieldsEngine; -import org.jlab.logging.DefaultLogger; /** * @@ -20,8 +19,6 @@ public AnalysisEngine() { public static void main(String[] args) { - DefaultLogger.debug(); - MagFieldsEngine enf = new MagFieldsEngine(); enf.init(); diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java index 5821f8df29..799b260188 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoder4.java @@ -17,8 +17,6 @@ import org.jlab.detector.helicity.HelicityState; import org.jlab.detector.pulse.ModeAHDC; -import org.jlab.logging.DefaultLogger; - import org.jlab.io.base.DataEvent; import org.jlab.io.evio.EvioDataEvent; import org.jlab.io.evio.EvioSource; @@ -59,7 +57,6 @@ public CLASDecoder4(boolean development){ hipoEvent = (HipoDataEvent) writer.createEvent(); String dir = ClasUtilsFile.getResourceDir("CLAS12DIR", "etc/bankdefs/hipo4"); schemaFactory.initFromDirectory(dir); - DefaultLogger.debug(); } public CLASDecoder4(){ @@ -69,7 +66,6 @@ public CLASDecoder4(){ hipoEvent = (HipoDataEvent) writer.createEvent(); String dir = ClasUtilsFile.getResourceDir("CLAS12DIR", "etc/bankdefs/hipo4"); schemaFactory.initFromDirectory(dir); - DefaultLogger.debug(); } public SchemaFactory getSchemaFactory(){ diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/examples/RawEventViewer.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/examples/RawEventViewer.java index e3e02903cd..acddb64458 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/examples/RawEventViewer.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/examples/RawEventViewer.java @@ -20,7 +20,6 @@ import org.jlab.io.evio.EvioDataEvent; import org.jlab.io.task.DataSourceProcessorPane; import org.jlab.io.task.IDataEventListener; -import org.jlab.logging.DefaultLogger; /** * @@ -174,7 +173,6 @@ public void processShape(DetectorShape2D shape) { } public static void main(String[] args){ - DefaultLogger.debug(); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); RawEventViewer viewer = new RawEventViewer(); diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java index 96a5c82c7e..f8acf56675 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/swaps/SwapManager.java @@ -10,7 +10,6 @@ import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; import org.jlab.jnp.hipo4.data.SchemaFactory; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.groups.IndexedTable; /** @@ -267,8 +266,6 @@ private void initDetectors(List detectorNames) { public static void main(String[] args) { - DefaultLogger.debug(); - SwapManager man1 = new SwapManager(Arrays.asList("DC"),"08/10/2020","10/13/2024"); System.err.println(man1.banksToTables.get("DC::tot")); diff --git a/common-tools/clas-io/src/main/java/org/jlab/io/utils/EvioCure.java b/common-tools/clas-io/src/main/java/org/jlab/io/utils/EvioCure.java index d62a828cb7..5f5f902cb2 100644 --- a/common-tools/clas-io/src/main/java/org/jlab/io/utils/EvioCure.java +++ b/common-tools/clas-io/src/main/java/org/jlab/io/utils/EvioCure.java @@ -7,7 +7,7 @@ import org.jlab.coda.jevio.EventWriter; import org.jlab.coda.jevio.EvioException; import org.jlab.coda.jevio.EvioReader; -import org.jlab.logging.DefaultLogger; +import org.jlab.logging.SplitLogger; /** * @@ -15,10 +15,9 @@ */ public class EvioCure { - private static final Logger LOGGER = Logger.getLogger(EvioCure.class.getName()); + private static final Logger LOGGER = SplitLogger.create(EvioCure.class.getName()); public static void main(String[] args) { - DefaultLogger.debug(); String inputFile = args[0]; String outputFile = args[1]; diff --git a/common-tools/clas-logging/src/main/java/org/jlab/logging/DefaultLogger.java b/common-tools/clas-logging/src/main/java/org/jlab/logging/DefaultLogger.java deleted file mode 100644 index e3ae831470..0000000000 --- a/common-tools/clas-logging/src/main/java/org/jlab/logging/DefaultLogger.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.jlab.logging; - -import java.io.IOException; -import java.io.InputStream; -import java.util.logging.Level; -import java.util.logging.LogManager; -import java.util.logging.Logger; - -/** - * Read a logging configuration and load it into the global log manager. - * - * @author Nick Tyler, UofSC - * - * Modified from hps-java logging - * @author Jeremy McCormick, SLAC - */ -public class DefaultLogger { - - private static void init(String resource) { - // if already set, don't override - if (System.getProperty("java.util.logging.config.file") == null) { - InputStream inputStream = DefaultLogger.class.getResourceAsStream(resource); - try { - LogManager.getLogManager().readConfiguration(inputStream); - Logger.getLogger(DefaultLogger.class.getName()).log(Level.INFO, "Reading logging properties from org/jlab/logging/{0}", resource); - } catch (SecurityException | IOException e) { - throw new RuntimeException("Initialization of default logging configuration failed.", e); - } - } - } - - private static void init(Level level){ - init(level.toString().toLowerCase()+".properties"); - } - - public static void initialize() { - init(Level.FINE); - } - - public static void initialize(Level level) { - init(level); - } - - public static void debug() { - init(Level.FINE); - } - - public static void silent() { - init("silent.properties"); - } - - public static void main(String[] args) { - DefaultLogger.initialize(); - Logger.getLogger(DefaultLogger.class.getName()).log(Level.INFO,"Info"); - Logger.getLogger(DefaultLogger.class.getName()).log(Level.WARNING,"Warning"); - Logger.getLogger(DefaultLogger.class.getName()).log(Level.SEVERE,"Severe"); - } -} diff --git a/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogger.java b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogger.java index a41a29417b..51492b29c3 100644 --- a/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogger.java +++ b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLogger.java @@ -81,8 +81,19 @@ public synchronized void publish(java.util.logging.LogRecord record) { logger.addHandler(errorHandler); // set the log level, since the handlers need to know it too - Level thisLevel = logger.getLevel(); - if(thisLevel==null) { // caller did not set log level, use parent + Level thisLevel = null; + // if a system property named '.level' is set, use that + String userLevelProperty = System.getProperty(logger.getName() + ".level"); + if(userLevelProperty != null) + thisLevel = Level.parse(userLevelProperty); + // else if the `SplitLoggerConfig` default level was set, use that level + else if(SplitLoggerConfig.INSTANCE.defaultLevelWasSet()) + thisLevel = SplitLoggerConfig.INSTANCE.getDefaultLevel(); + // else fallback to the level of `logger` itself + else + thisLevel = logger.getLevel(); + // if all else fails, try to use the parent's level + if(thisLevel==null) { thisLevel = logger.getParent().getLevel(); if(thisLevel==null) { // should never happen, but just in case, fall back to default and complain directly to `stderr` thisLevel = Level.INFO; diff --git a/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLoggerConfig.java b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLoggerConfig.java new file mode 100644 index 0000000000..515b3a9a21 --- /dev/null +++ b/common-tools/clas-logging/src/main/java/org/jlab/logging/SplitLoggerConfig.java @@ -0,0 +1,36 @@ +package org.jlab.logging; + +import java.util.logging.Level; + +/** Configuration singleton for {@code SplitLogger} */ +public enum SplitLoggerConfig { + + /** singleton instance */ + INSTANCE; + + private volatile Level defaultLevel = Level.INFO; + private volatile boolean calledSetDefaultLevel = false; + + /** + * Set the default {@code logging.Level} for all new {@code SplitLogger} instances. + * Note: see {@code SplitLogger} details to check if other ways to set logging levels will take priority over this. + * @param level the log level + */ + public synchronized void setDefaultLevel(Level level) { + this.defaultLevel = level; + this.calledSetDefaultLevel = true; + } + + /** @return the default {@code logging.Level} for all new {@code SplitLogger} instances. + * Note: see {@code SplitLogger} details to check if other ways to set logging levels will take priority over this. + */ + public Level getDefaultLevel() { + return this.defaultLevel; + } + + /** @return true if {@code setDefaultLevel} was called */ + public boolean defaultLevelWasSet() { + return this.calledSetDefaultLevel; + } + +} diff --git a/common-tools/clas-logging/src/main/resources/org/jlab/logging/fine.properties b/common-tools/clas-logging/src/main/resources/org/jlab/logging/fine.properties deleted file mode 100644 index 533518ce90..0000000000 --- a/common-tools/clas-logging/src/main/resources/org/jlab/logging/fine.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# Global logging configuration for clas -# Nick Tyler, UofSC -# -# Modified from hps-java logging -# Jeremy McCormick, SLAC -# - -# default global level -.level = FINE - -# default handler which prints to console -handlers = java.util.logging.ConsoleHandler - -# Old detailed format -# prints timestamp (1$), level (4$), source ($2), message (5$), and (optionally) an exception (6$). -#java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tT [%4$s] %2$s :: %5$s%6$s%n - -# New simplified format -# MESSAGE -java.util.logging.SimpleFormatter.format = %5$s%6$s%n - -# configure the console handler -java.util.logging.ConsoleHandler.level = ALL -java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter - - - - diff --git a/common-tools/clas-logging/src/main/resources/org/jlab/logging/finer.properties b/common-tools/clas-logging/src/main/resources/org/jlab/logging/finer.properties deleted file mode 100644 index 6b4ae22e3c..0000000000 --- a/common-tools/clas-logging/src/main/resources/org/jlab/logging/finer.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# Global logging configuration for clas -# Nick Tyler, UofSC -# -# Modified from hps-java logging -# Jeremy McCormick, SLAC -# - -# default global level -.level = FINER - -# default handler which prints to console -handlers = java.util.logging.ConsoleHandler - -# Old detailed format -# prints timestamp (1$), level (4$), source ($2), message (5$), and (optionally) an exception (6$). -#java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tT [%4$s] %2$s :: %5$s%6$s%n - -# New simplified format -# MESSAGE -java.util.logging.SimpleFormatter.format = %5$s%6$s%n - -# configure the console handler -java.util.logging.ConsoleHandler.level = ALL -java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter - - - - diff --git a/common-tools/clas-logging/src/main/resources/org/jlab/logging/finest.properties b/common-tools/clas-logging/src/main/resources/org/jlab/logging/finest.properties deleted file mode 100644 index 42fe7a21c0..0000000000 --- a/common-tools/clas-logging/src/main/resources/org/jlab/logging/finest.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# Global logging configuration for clas -# Nick Tyler, UofSC -# -# Modified from hps-java logging -# Jeremy McCormick, SLAC -# - -# default global level -.level = FINEST - -# default handler which prints to console -handlers = java.util.logging.ConsoleHandler - -# Old detailed format -# prints timestamp (1$), level (4$), source ($2), message (5$), and (optionally) an exception (6$). -#java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tT [%4$s] %2$s :: %5$s%6$s%n - -# New simplified format -# MESSAGE -java.util.logging.SimpleFormatter.format = %5$s%6$s%n - -# configure the console handler -java.util.logging.ConsoleHandler.level = ALL -java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter - - - - diff --git a/common-tools/clas-logging/src/main/resources/org/jlab/logging/info.properties b/common-tools/clas-logging/src/main/resources/org/jlab/logging/info.properties deleted file mode 100644 index 3f312f06ae..0000000000 --- a/common-tools/clas-logging/src/main/resources/org/jlab/logging/info.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# Global logging configuration for clas -# Nick Tyler, UofSC -# -# Modified from hps-java logging -# Jeremy McCormick, SLAC -# - -# default global level -.level = INFO - -# default handler which prints to console -handlers = java.util.logging.ConsoleHandler - -# Old detailed format -# prints timestamp (1$), level (4$), source ($2), message (5$), and (optionally) an exception (6$). -#java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tT [%4$s] %2$s :: %5$s%6$s%n - -# New simplified format -# MESSAGE -java.util.logging.SimpleFormatter.format = %5$s%6$s%n - -# configure the console handler -java.util.logging.ConsoleHandler.level = ALL -java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter - - - - diff --git a/common-tools/clas-logging/src/main/resources/org/jlab/logging/silent.properties b/common-tools/clas-logging/src/main/resources/org/jlab/logging/silent.properties deleted file mode 100644 index 508704d952..0000000000 --- a/common-tools/clas-logging/src/main/resources/org/jlab/logging/silent.properties +++ /dev/null @@ -1,51 +0,0 @@ -# -# Global logging configuration for clas -# Nick Tyler, UofSC -# -# Modified from hps-java logging -# Jeremy McCormick, SLAC -# - -# default global level -.level = WARNING - -# default handler which prints to console -handlers = java.util.logging.ConsoleHandler - -# Old detailed format -# prints timestamp (1$), level (4$), source ($2), message (5$), and (optionally) an exception (6$). -#java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tT [%4$s] %2$s :: %5$s%6$s%n - -# New simplified format -# [LEVEL][LOGGER] MESSAGE -java.util.logging.SimpleFormatter.format = %1$tT [%4$s] %5$s%6$s%n - -# configure the console handler -java.util.logging.ConsoleHandler.level = ALL -java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter - -# turn minuit logging off -org.freehep.math.minuit.level = OFF - -# calibration logging -org.jlab.detector.calib.level = OFF - -# Reconstruction level -org.jlab.clas.reco.level = OFF - -# Hipo io level -org.jlab.io.hipo = OFF - -# Magnetic Field level -cnuphys.magfield.level = OFF - -# Log level for each service -org.jlab.service.ec.level = OFF -org.jlab.service.eb.level = OFF -org.jlab.rec.cvt.services.level = OFF -org.jlab.service.htcc.level = OFF -org.jlab.rec.dc.level = OFF - - - - diff --git a/common-tools/clas-logging/src/main/resources/org/jlab/logging/warning.properties b/common-tools/clas-logging/src/main/resources/org/jlab/logging/warning.properties deleted file mode 100644 index 2254d698cd..0000000000 --- a/common-tools/clas-logging/src/main/resources/org/jlab/logging/warning.properties +++ /dev/null @@ -1,29 +0,0 @@ -# -# Global logging configuration for clas -# Nick Tyler, UofSC -# -# Modified from hps-java logging -# Jeremy McCormick, SLAC -# - -# default global level -.level = WARNING - -# default handler which prints to console -handlers = java.util.logging.ConsoleHandler - -# Old detailed format -# prints timestamp (1$), level (4$), source ($2), message (5$), and (optionally) an exception (6$). -#java.util.logging.SimpleFormatter.format = %1$tY-%1$tm-%1$td %1$tT [%4$s] %2$s :: %5$s%6$s%n - -# New simplified format -# MESSAGE -java.util.logging.SimpleFormatter.format = %5$s%6$s%n - -# configure the console handler -java.util.logging.ConsoleHandler.level = ALL -java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter - - - - diff --git a/common-tools/clas-reco/pom.xml b/common-tools/clas-reco/pom.xml index a262ce45af..af09f0d37c 100644 --- a/common-tools/clas-reco/pom.xml +++ b/common-tools/clas-reco/pom.xml @@ -84,6 +84,12 @@ 13.4.1-SNAPSHOT + + org.jlab.clas + clas-logging + 13.4.1-SNAPSHOT + + diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java index 71c9a8d1ea..0e9d61551f 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java @@ -17,7 +17,7 @@ import java.util.Arrays; import org.jlab.jnp.hipo4.data.SchemaFactory; import org.json.JSONObject; -import org.jlab.logging.DefaultLogger; +import org.jlab.logging.SplitLogger; import org.jlab.utils.ClaraYaml; /** @@ -30,7 +30,7 @@ public class EngineProcessor { public static final String ENGINE_CLASS_PP = "org.jlab.service.postproc.PostprocEngine"; private final Map processorEngines = new LinkedHashMap<>(); - private static final Logger LOGGER = Logger.getLogger(EngineProcessor.class.getPackage().getName()); + private static final Logger LOGGER = SplitLogger.create(EngineProcessor.class.getPackage().getName()); private boolean updateDictionary = true; private SchemaFactory banksToKeep = null; private final List schemaExempt = Arrays.asList("RUN::config","DC::tdc"); @@ -365,6 +365,7 @@ public static void main(String[] args){ parser.addOption("-H","0","restream helicity"); parser.parse(args); + parser.syncLogLevel(LOGGER); List services = parser.getInputList(); diff --git a/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java b/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java index c8533f20e8..780e031317 100644 --- a/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java +++ b/common-tools/clas-utils/src/main/java/org/jlab/utils/options/OptionParser.java @@ -8,8 +8,10 @@ import java.util.Properties; import java.util.Set; import java.util.TreeMap; +import java.util.logging.Logger; import java.util.logging.Level; -import org.jlab.logging.DefaultLogger; +import org.jlab.logging.SplitLogger; +import org.jlab.logging.SplitLoggerConfig; /** * @@ -25,8 +27,7 @@ public class OptionParser { private String program = "undefined"; private boolean requiresInputList = true; private String programDescription = ""; - private Level logLevel = Level.FINE; // default log level - private boolean usingExternalLogger = false; // if true, do not use `DefaultLogger` here + private Level logLevel = Level.INFO; // default log level public OptionParser(){ init(); @@ -191,8 +192,7 @@ else if(this.containsOptions(arguments,"-v","-version")==true){ private void setVerbosity(String level) { try { this.logLevel = Level.parse(level); - if (!usingExternalLogger) - DefaultLogger.initialize(this.logLevel); // do not do this if using SplitLogger externally, otherwise you get NO log printouts whatsoever + SplitLoggerConfig.INSTANCE.setDefaultLevel(this.logLevel); } catch (IllegalArgumentException e) { System.err.println("Invalid -l java.util.logging.Level: "+level); @@ -222,8 +222,23 @@ public Level getLogLevel() { return this.logLevel; } - public void useExternalLogger() { - this.usingExternalLogger = true; // FIXME: if we get rid of `DefaultLogger`, we can get rid of this kluge + /** + * Set the log level of a list of classes to your preferred level. + * Use this to override the user's choice of logging level for certain classes. + * @param level the log level + * @param classList string names of the classes + */ + public static void overrideLogLevel(String level, String... classList) { + for(var className : classList) + System.setProperty(className + ".level", level); + } + + /** + * Set the log level to be consistent with the level set by the user's {@code -l} option + * @param externalLogger an external {@code Logger} instance, typically one owned by the owner of this {@code OptionParser} instance + */ + public void syncLogLevel(Logger externalLogger) { + SplitLogger.configureLevel(externalLogger, this.logLevel); } public static void main(String[] args){ diff --git a/reconstruction/alert/pom.xml b/reconstruction/alert/pom.xml index c339d2063d..c0961d69f6 100644 --- a/reconstruction/alert/pom.xml +++ b/reconstruction/alert/pom.xml @@ -56,12 +56,6 @@ 13.4.1-SNAPSHOT compile - - org.jlab.clas - clas-logging - 13.4.1-SNAPSHOT - test - org.jlab.clas clas-utils diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java index f9ce42c9b0..292f5f57d2 100644 --- a/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/AHDCTest.java @@ -5,7 +5,6 @@ import org.jlab.io.base.DataEvent; import org.jlab.detector.base.DetectorType; -import org.jlab.logging.DefaultLogger; import org.jlab.analysis.physics.TestEvent; import org.jlab.service.ahdc.AHDCEngine; import org.jlab.rec.ahdc.Mode; @@ -20,7 +19,6 @@ public class AHDCTest { @Test public void run() { System.setProperty("CLAS12DIR", "../../"); - DefaultLogger.debug(); DataEvent event = TestEvent.get(DetectorType.AHDC); diff --git a/reconstruction/alert/src/test/java/org/jlab/service/alert/ATOFTest.java b/reconstruction/alert/src/test/java/org/jlab/service/alert/ATOFTest.java index cd53cb33c6..e275fffc9c 100644 --- a/reconstruction/alert/src/test/java/org/jlab/service/alert/ATOFTest.java +++ b/reconstruction/alert/src/test/java/org/jlab/service/alert/ATOFTest.java @@ -5,7 +5,6 @@ import org.jlab.io.base.DataEvent; import org.jlab.detector.base.DetectorType; -import org.jlab.logging.DefaultLogger; import org.jlab.analysis.physics.TestEvent; import org.jlab.service.atof.ATOFEngine; @@ -17,7 +16,6 @@ public class ATOFTest { @Test public void run() { System.setProperty("CLAS12DIR", "../../"); - DefaultLogger.debug(); DataEvent event = TestEvent.get(DetectorType.ATOF); diff --git a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Geometry.java b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Geometry.java index dd14ef47c7..f925f3974e 100644 --- a/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Geometry.java +++ b/reconstruction/cvt/src/main/java/org/jlab/rec/cvt/Geometry.java @@ -30,7 +30,7 @@ import org.jlab.groot.data.GraphErrors; import org.jlab.groot.graphics.EmbeddedCanvasTabbed; import org.jlab.groot.group.DataGroup; -import org.jlab.logging.DefaultLogger; +import org.jlab.logging.SplitLogger; import org.jlab.rec.cvt.bmt.BMTGeometry; import org.jlab.rec.cvt.bmt.BMTType; import org.jlab.rec.cvt.bmt.CCDBConstantsLoader; @@ -94,7 +94,7 @@ public class Geometry { private static boolean LOADED; - private final static Logger LOGGER = Logger.getLogger(Geometry.class.getName()); + private final static Logger LOGGER = SplitLogger.create(Geometry.class.getName()); // private constructor for a singleton @@ -513,13 +513,13 @@ public static DataGroup compareStrips(List geo1, List geo2, Poin * @param args */ public static void main(String[] args) { - DefaultLogger.debug(); OptionParser parser = new OptionParser("Compare CVT geometries from two variations"); parser.setRequiresInputList(false); parser.addOption("-var1", "default", "geometry variation 1"); parser.addOption("-var2", "rgb_spring2019", "geometry variation 2"); parser.addOption("-offset", "0", "compensate for the average offset of SVT-R1 strip upstream end (1)"); parser.parse(args); + parser.syncLogLevel(LOGGER); int run = 11; String var1 = parser.getOption("-var1").stringValue(); diff --git a/reconstruction/cvt/src/test/java/org/jlab/rec/cvt/services/CVTReconstructionTest.java b/reconstruction/cvt/src/test/java/org/jlab/rec/cvt/services/CVTReconstructionTest.java index 6bbe902913..8fea0c57de 100644 --- a/reconstruction/cvt/src/test/java/org/jlab/rec/cvt/services/CVTReconstructionTest.java +++ b/reconstruction/cvt/src/test/java/org/jlab/rec/cvt/services/CVTReconstructionTest.java @@ -12,7 +12,6 @@ import org.jlab.analysis.math.ClasMath; import org.jlab.clas.swimtools.MagFieldsEngine; import org.jlab.detector.base.DetectorType; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.CLASResources; /** @@ -24,7 +23,6 @@ public class CVTReconstructionTest { @Test public void testCVTReconstruction() { - DefaultLogger.debug(); System.setProperty("CLAS12DIR", "../../"); diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java index 5bfba7b14e..2f0add9508 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/DCEngine.java @@ -4,6 +4,7 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import org.jlab.logging.SplitLogger; import org.jlab.clas.reco.ReconstructionEngine; import org.jlab.detector.banks.RawBank.OrderType; import org.jlab.io.base.DataBank; @@ -39,7 +40,7 @@ public class DCEngine extends ReconstructionEngine { private String dafChi2Cut = null; private String dafAnnealingFactorsTB = null; - public static final Logger LOGGER = Logger.getLogger(ReconstructionEngine.class.getName()); + public static final Logger LOGGER = SplitLogger.create(ReconstructionEngine.class.getName()); public DCEngine(String name) { diff --git a/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java b/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java index 1a2d7002e1..300ed153c1 100644 --- a/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java +++ b/reconstruction/dc/src/main/java/org/jlab/service/dc/LayerEfficiencyAnalyzer.java @@ -26,7 +26,6 @@ import org.jlab.io.base.DataEvent; import org.jlab.io.task.DataSourceProcessorPane; import org.jlab.io.task.IDataEventListener; -import org.jlab.logging.DefaultLogger; import org.jlab.rec.dc.banks.HitReader; import org.jlab.rec.dc.cluster.ClusterCleanerUtilities; import org.jlab.rec.dc.cluster.ClusterFinder; @@ -420,8 +419,6 @@ public void saveHistosToFile(String fileName) { public static void main(String[] args) { - DefaultLogger.debug(); - JFrame frame = new JFrame("DC ANALYSIS"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension screensize = null; @@ -440,6 +437,7 @@ public static void main(String[] args) { OptionParser parser = new OptionParser("dclayereffs-anal"); parser.addOption("-i",""); parser.parse(args); + parser.syncLogLevel(LOGGER); if(parser.hasOption("-i")==true){ String inputFile = parser.getOption("-i").stringValue(); diff --git a/reconstruction/dc/src/test/java/org/jlab/service/dc/DCReconstructionTest.java b/reconstruction/dc/src/test/java/org/jlab/service/dc/DCReconstructionTest.java index cfcf56a608..888d26197c 100644 --- a/reconstruction/dc/src/test/java/org/jlab/service/dc/DCReconstructionTest.java +++ b/reconstruction/dc/src/test/java/org/jlab/service/dc/DCReconstructionTest.java @@ -11,7 +11,6 @@ import org.jlab.clas.swimtools.MagFieldsEngine; import org.jlab.detector.base.DetectorType; -import org.jlab.logging.DefaultLogger; import org.jlab.utils.CLASResources; /** @@ -23,8 +22,6 @@ public class DCReconstructionTest { @Test public void testDCReconstruction() { - DefaultLogger.debug(); - System.setProperty("CLAS12DIR", "../../"); String mapDir = CLASResources.getResourcePath("etc")+"/data/magfield"; diff --git a/reconstruction/eb/pom.xml b/reconstruction/eb/pom.xml index 74544f1124..60b161a05d 100644 --- a/reconstruction/eb/pom.xml +++ b/reconstruction/eb/pom.xml @@ -45,12 +45,6 @@ 13.4.1-SNAPSHOT test - - org.jlab.clas - clas-logging - 13.4.1-SNAPSHOT - test - org.jlab.clas clas-detector diff --git a/reconstruction/eb/src/test/java/org/jlab/service/eb/EBReconstructionTest.java b/reconstruction/eb/src/test/java/org/jlab/service/eb/EBReconstructionTest.java index e35a1dec27..64f1dcd6cc 100644 --- a/reconstruction/eb/src/test/java/org/jlab/service/eb/EBReconstructionTest.java +++ b/reconstruction/eb/src/test/java/org/jlab/service/eb/EBReconstructionTest.java @@ -11,7 +11,6 @@ import org.jlab.io.base.DataBank; import org.jlab.io.base.DataEvent; -import org.jlab.logging.DefaultLogger; import org.jlab.service.dc.DCHBEngine; import org.jlab.service.dc.DCTBEngine; import org.jlab.service.ec.ECEngine; @@ -108,7 +107,6 @@ public boolean hasValidRefs(DataEvent ev, @Test public void testEBReconstruction() { - DefaultLogger.debug(); System.setProperty("CLAS12DIR", "../../"); DataEvent photonEvent = TestEvent.get(DetectorType.ECAL); diff --git a/reconstruction/ec/pom.xml b/reconstruction/ec/pom.xml index b0e3509b9a..4f561157ea 100644 --- a/reconstruction/ec/pom.xml +++ b/reconstruction/ec/pom.xml @@ -29,12 +29,6 @@ 13.4.1-SNAPSHOT test - - org.jlab.clas - clas-logging - 13.4.1-SNAPSHOT - test - org.jlab.clas clas-reco diff --git a/reconstruction/ec/src/test/java/org/jlab/service/ec/ECReconstructionTest.java b/reconstruction/ec/src/test/java/org/jlab/service/ec/ECReconstructionTest.java index 503b6cf226..ab55de260f 100644 --- a/reconstruction/ec/src/test/java/org/jlab/service/ec/ECReconstructionTest.java +++ b/reconstruction/ec/src/test/java/org/jlab/service/ec/ECReconstructionTest.java @@ -7,7 +7,6 @@ import org.jlab.analysis.physics.TestEvent; import org.jlab.detector.base.DetectorType; -import org.jlab.logging.DefaultLogger; /** * @@ -17,7 +16,6 @@ public class ECReconstructionTest { @Test public void testECReconstruction() { - DefaultLogger.debug(); System.setProperty("CLAS12DIR", "../../");