RFR: 7159567 - inconsistent configuration of MemoryHandler

Jim Gish jim.gish at oracle.com
Fri Sep 28 19:13:33 UTC 2012


I've re-spun the change with additional usage notes in the spec to 
reflect the long-standing actual behavior.  Note that it doesn't change 
the spec per se, as it was already stated in LogManager. This change 
simply replicates that language with an example in each *Handler class 
to make it easier to find.

The webrev, as posted at 
http://cr.openjdk.java.net/~jgish/Bug7159567-set-logging-MemoryHandler/ 
<http://cr.openjdk.java.net/%7Ejgish/Bug7159567-set-logging-MemoryHandler/>

Thanks,
    Jim

On 09/27/2012 10:05 AM, Jim Gish wrote:
> I agree.
>
> I reached the same conclusion, but wanted to see how others reacted.  
> Can we handle the spec change separate from the bug fix? If so, I'll 
> file another spec bug, and proceed with this fix.
>
> The key part of the current language that leaves this open and 
> undefined as it is is "By default each<tt>MemoryHandler</tt>  is 
> initialized using the following LogManager configuration properties." 
> and then refers to "java.util.logging.<foo>" properties.
>
> Thanks,
>    Jim
>
> On 09/26/2012 10:44 PM, Mandy Chung wrote:
>> Hi Jim,
>>
>> On 9/26/2012 2:19 PM, Jim Gish wrote:
>>> Please review 
>>> http://cr.openjdk.java.net/~jgish/Bug7159567-set-MemoryHandler-target/ 
>>> <http://cr.openjdk.java.net/%7Ejgish/Bug7159567-set-MemoryHandler-target/> 
>>>
>>>
>>> Overview - currently you can sub-class 
>>> java.util.logging.MemoryHandler and specify its configuration in a 
>>> logging.properties file via the classname.  For example, if 
>>> com.foo.MyMemoryHandler extends MemoryHandler, you can have:
>>>
>>> logging.properties:
>>>
>>> com.foo.MyMemoryHandler.push=WARNING
>>> com.foo.MyMemoryHandler.level=FINEST
>> The current implementation does use the<handler-classname>.* properties.
>> However I couldn't find it from the j.u.logging specification. Did
>> I miss any javadoc that mentions this?
>>
>> Per the j.u.l.MemoryHandler specification, it only reads
>> "java.util.logging.MemoryHandler.*" properties but not the properties
>> with the subclass name.
>>
>>  *<b>Configuration:</b>
>>  * By default each<tt>MemoryHandler</tt>  is initialized using the 
>> following
>>  * LogManager configuration properties.  If properties are not defined
>>  * (or have invalid values) then the specified default values are used.
>>  * If no default value is defined then a RuntimeException is thrown.
>>  *<ul>
>>  *<li>    java.util.logging.MemoryHandler.level
>>  *        specifies the level for the<tt>Handler</tt>
>>  *        (defaults to<tt>Level.ALL</tt>).
>>  *<li>    java.util.logging.MemoryHandler.filter
>>  *        specifies the name of a<tt>Filter</tt> class to use
>>  *        (defaults to no<tt>Filter</tt>).
>>  *<li>    java.util.logging.MemoryHandler.size
>>  *        defines the buffer size (defaults to 1000).
>>  *<li>    java.util.logging.MemoryHandler.push
>>  *        defines the<tt>pushLevel</tt>  (defaults 
>> to<tt>level.SEVERE</tt>).
>>  *<li>    java.util.logging.MemoryHandler.target
>>  *        specifies the name of the target<tt>Handler</tt>  class.
>>  *        (no default).
>>  *</ul>
>>
>> I looked at the change history and found that the change to read
>> property using the classname as the prefix (rather than 
>> j.u.l.MemoryHandler)
>> was done in JDK 5 in the fix for 4635817.
>>
>> This isn't related to the bug you're fixing but I think this
>> deserves to investigate whether this was an intended spec change
>> at that time; if so, a spec update to clarify this behavior would
>> be good.
>>
>> Thanks
>> Mandy
>>
>

-- 
Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304
Oracle Java Platform Group | Core Libraries Team
35 Network Drive
Burlington, MA 01803
jim.gish at oracle.com




More information about the core-libs-dev mailing list