< prev index next >

src/java.logging/share/classes/java/util/logging/LogManager.java

Print this page

        

@@ -396,13 +396,11 @@
                         // Create and retain Logger for the root of the namespace.
                         owner.addLogger(root);
 
                         // For backward compatibility: add any handlers configured using
                         // ".handlers"
-                        owner.createLoggerHandlers("", ".handlers")
-                                .stream()
-                                .forEach(root::addHandler);
+                        addInitialRootLoggerHandlers();
 
                         // Initialize level if not yet initialized
                         if (!root.isLevelInitialized()) {
                             root.setLevel(defaultLevel);
                         }

@@ -993,11 +991,28 @@
                 closeOnResetLoggers.addIfAbsent(CloseOnReset.create(logger));
             }
         }
     }
 
-    private List<Handler> createLoggerHandlers(final String name, final String handlersPropertyName)
+    /**
+     * Invoked when the root logger is initialized.
+     * This method is called only once, when the root logger is initialized.
+     * The default implementation of this method will instantiate
+     * any handlers defined by the {@code ".handlers"} property and add
+     * them to the root logger.
+     * <p>
+     * Subclasses of {@code LogManager} may override this method
+     * to turn off this behavior, by providing an empty method body.
+     */
+    protected void addInitialRootLoggerHandlers() {
+        createLoggerHandlers("", ".handlers")
+                .stream()
+                .forEach(rootLogger::addHandler);
+    }
+
+    private List<Handler> createLoggerHandlers(final String name,
+                                               final String handlersPropertyName)
     {
         String names[] = parseClassNames(handlersPropertyName);
         List<Handler> handlers = new ArrayList<>(names.length);
         for (String type : names) {
             try {
< prev index next >