RFR 8026499: Root Logger level can be reset unexpectedly

Mandy Chung mandy.chung at oracle.com
Tue Oct 15 22:58:26 UTC 2013


On 10/15/2013 9:48 AM, Daniel Fuchs wrote:
> Hi,
>
> Please find below a fix for:
>
>     8026499: Root Logger level can be reset unexpectedly
>     https://bugs.openjdk.java.net/browse/JDK-8026499
>
> <http://cr.openjdk.java.net/~dfuchs/webrev_8026499/webrev.00/>
>
> The issue here is that calling a method like e.g. URL.openConnection()
> will trigger the initialization of some platform logger, which could
> in turn cause the root logger to be lazilly added to the system context,
> which in turn causes the root logger's level to be reset with the
> value found in the configuration file (INFO).
>
> The fix is to not reinitialize the value of the logger's level if
> it already has been initialized.

The change looks okay.  When the root logger is added to the system 
context, it considers it as a newly created logger and thus resetting 
its level.   The global logger should have the same issue as there is 
only a single instance.   I believe the logger's handler doesn't get 
reset and level is the only issue.

Logger.hasLocalLevel() doesn't seem to be necessary and it seems to be 
more explicit to replace !logger.hasLocalLevel() with
     logger.getLevel() == null

It would also help to add a comment to explain the check.

TestRootLoggerLevel.java - it may be good to also test the global logger.

line 70: I believe this line is not necessary (do you mean to do any 
other checking and that's why you call LoggingSupport.getLogger?)

I think the comment on the behavior before the fix (line 77-78) can be 
removed and this may become not as relevant after this bug fix. Line 104 
- this permission may be needed in your early version of this test?  can 
be removed now?  btw - should this test also run with no security manager?

Mandy





More information about the core-libs-dev mailing list