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 <...>".
-- - DML
