< prev index next >
src/java.logging/share/classes/java/util/logging/LogManager.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -385,15 +385,19 @@
@Override
public Object run() {
assert rootLogger == null;
assert initializedCalled && !initializationDone;
+ // create root logger before reading primordial
+ // configuration - to ensure that it will be added
+ // before the global logger, and not after.
+ owner.rootLogger = owner.new RootLogger();
+
// Read configuration.
owner.readPrimordialConfiguration();
// Create and retain Logger for the root of the namespace.
- owner.rootLogger = owner.new RootLogger();
owner.addLogger(owner.rootLogger);
if (!owner.rootLogger.isLevelInitialized()) {
owner.rootLogger.setLevel(defaultLevel);
}
@@ -514,11 +518,11 @@
Logger demandLogger(String name, String resourceBundleName, Module module) {
Logger result = getLogger(name);
if (result == null) {
// only allocate the new logger once
Logger newLogger = new Logger(name, resourceBundleName,
- module == null ? null : module, this, false);
+ module, this, false);
do {
if (addLogger(newLogger)) {
// We successfully added the new Logger that we
// created above so return it without refetching.
return newLogger;
@@ -567,19 +571,17 @@
logger = getLogger(name);
}
} while (logger == null);
// LogManager will set the sysLogger's handlers via LogManager.addLogger method.
- if (logger != sysLogger && sysLogger.accessCheckedHandlers().length == 0) {
- // if logger already exists but handlers not set
+ if (logger != sysLogger) {
+ // if logger already exists we merge the two logger configurations.
final Logger l = logger;
AccessController.doPrivileged(new PrivilegedAction<Void>() {
@Override
public Void run() {
- for (Handler hdl : l.accessCheckedHandlers()) {
- sysLogger.addHandler(hdl);
- }
+ l.mergeWithSystemLogger(sysLogger);
return null;
}
});
}
return sysLogger;
< prev index next >