RFR: 8023168 - Cleanup LogManager class initialization and LogManager/LoggerContext relationship

David M. Lloyd david.lloyd at redhat.com
Wed Sep 4 21:36:13 UTC 2013

On 09/04/2013 02:56 PM, Daniel Fuchs wrote:
> Hi,
> Please find below a changeset that will fix
> 8023168: Cleanup LogManager class initialization and
>           LogManager/LoggerContext relationship.
> <http://cr.openjdk.java.net/~dfuchs/webrev_8023168/webrev.00/>
> LogManager class initialization is fragile: because Logger
> constructor calls LogManager.getLogManager, and because
> LogManager calls new Logger during LogManager class initialization,
> and because the global logger is instantiated during Logger class
> initialization, loading Logger.class or LogManager.class can lead to
> challenging hard to diagnose issues.

As far as calling initialization ("ensureLogManagerInitialized()"), it's 
a shame that checking for a one-time action has to run through a 
synchronization block every time.  Maybe a "lazy holder" class would be 
more appropriate here, especially given that the point seems to be to 
produce the RootLogger() instance which doubles as the indicator that 
initialization was done.

There's a grammatical error in the comment at line 1547 of 
LogManager.java: "We do not the protected Logger <...>".


More information about the core-libs-dev mailing list