Working multi RCP platform
[lgpl/argeo-commons.git] / org.argeo.init / src / org / argeo / init / logging / ThinLogging.java
index 30a149bc99811487af51d1cc90a07c254ab50821..dd6fad2e3a5a54c261517b02f720cacf9f925278 100644 (file)
@@ -68,7 +68,7 @@ class ThinLogging implements Consumer<Map<String, Object>> {
        // we don't synchronize maps on purpose as it would be
        // too expensive during normal operation
        // updates to the config may be shortly inconsistent
-       private SortedMap<String, ThinLogger> loggers = new TreeMap<>();
+       private SortedMap<String, ThinLogger> loggers = Collections.synchronizedSortedMap(new TreeMap<>());
        private NavigableMap<String, Level> levels = new TreeMap<>();
        private volatile boolean updatingConfiguration = false;
 
@@ -191,9 +191,11 @@ class ThinLogging implements Consumer<Map<String, Object>> {
        }
 
        public Logger getLogger(String name, Module module) {
+               Objects.requireNonNull(name, "logger name");
                if (!loggers.containsKey(name)) {
                        ThinLogger logger = new ThinLogger(name, computeApplicableLevel(name));
                        loggers.put(name, logger);
+                       return logger;
                }
                return loggers.get(name);
        }
@@ -393,11 +395,11 @@ class ThinLogging implements Consumer<Map<String, Object>> {
                                        case "org.osgi.service.log.Logger":
                                        case "org.eclipse.osgi.internal.log.LoggerImpl":
                                        case "org.argeo.api.cms.CmsLog":
-                                       case "org.argeo.init.osgi.OsgiBootUtils":
-                                       case "org.slf4j.impl.ArgeoLogger":
-                                       case "org.argeo.cms.internal.osgi.CmsOsgiLogger":
                                        case "org.eclipse.jetty.util.log.Slf4jLog":
                                        case "sun.util.logging.internal.LoggingProviderImpl$JULWrapper":
+                                       case "org.slf4j.impl.ArgeoLogger":
+                                       case "org.argeo.cms.internal.osgi.CmsOsgiLogger":
+                                       case "org.argeo.init.osgi.OsgiBootUtils":
                                                lowestLoggerInterface = i;
                                                continue stack;
                                        default: