<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I don't think the JEP has been updated, only published. I have not had time to do any changes to it.<div><br></div><div>/Staffan<br><div><br><div><div>On 10 jul 2012, at 17:16, Kirk Pepperdine <<a href="mailto:kirk@kodewerk.com">kirk@kodewerk.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Staffan,<div><br></div><div>I've noticed that the specification has been updated but still contains the hierarchical level system. Is it your intention to maintain level in the specification?</div><div><br></div><div>Regards,</div><div>Kirk</div><div><br></div><div><div><div>On 2012-06-20, at 12:50 PM, Staffan Larsen wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi,</div><div><br></div><div>Thanks for the feedback! </div><div><br></div><div>It is going to be hard to find the right balance between a system that provides great power and one that is simple to use and to implement. In general, I will lean more towards making it simple, but I want to make sure we cover the major use cases as well.</div><div><br></div><div>It looks like there are three possible ways to select log messages being discussed here. I'd like to discuss how to solve your problem for each one.</div><div><br></div><div>1) Selection based on component/level. (This is what is described in the JEP.)</div><div>In this case we can have any number of components. So we can have gc and tenuring as different component. They will each have a level associated with them. However there is no relationship between the gc and the tenuring component, so to enable both you need to say -Xverbose:gc,tenuring. To only enable tenuring you can say -Xverbose:tenuring. To enable all gc messages, except tenuring you say -Xverbose:gc.</div><div><br></div><div>2) Selection based on component/level where the component is a hierarchy.</div><div>In this case the different steps in the hierarchy can have different levels associated with them, but if there is no explicit level associated, the parent level will be used. So to enable both tenuring and gc you would say -Xverbose:gc. To enable only gc you would say -Xverbose:gc,gc.tenuring=none (I made up the 'none' level). To enable only tenuring you would say -Xverbose:gc.tenuring.</div><div><br></div><div>3) Selection based on tags. </div><div>In this case log messages are associated with a set of tags instead of a component/level tuple. You select messages by specifying tags you want to see. I imagine that in this case the tenuring messages would be tagged with both the gc and the tenuring tags, but that there would be other messages tagged with gc only. To enable gc and tenuring you would say -Xverbose:gc,tenuring. To enable all gc messages you say -Xverbose:gc. There is no way to see only gc messages without seeing the tenuring messages.</div><div><br></div><div>Is this a fair description of the different ways? I'm especially interested in the last one - I'm not sure I captured your idea correctly there.</div><div><br></div><div>Thanks,</div><div>/Staffan</div><div><br></div><br><div><div>On 20 jun 2012, at 09:32, Jesper Wilhelmsson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
<div bgcolor="#FFFFFF" text="#000000">
Hi Kirk,<br>
<br>
I'm CC'ing serviceability on this since this is really their JEP and
discussions around it should go on the serviceability list, even
though it seems you are mainly interested in GC logging at this
point.<br>
<br>
I understand what you want and I see that the logging level won't
help us get there. I don't agree that the logging we have today
can't fit nicely into a hierarchical scheme though, it just needs to
be more fine grained to achieve what you want.<br>
<br>
We can be pretty generous with modules and in principal have one
module for each verbose flag that exists today. Personally I don't
think that is a good idea, but it certainly is possible. I would
rather like to propose a different solution.<br>
<br>
How about we have a gc module that can be filtered based on
different sub modules. The sub modules could be fairly close to the
existing verbose flags that exists today if that turns out to be a
good way to divide information. It could look like this<br>
<br>
-Xverbose:gc=info,gc.tenuring=debug<br>
<br>
to set regular gc verbose to info level (I would say that is close
to PrintGC) and turn on more detailed logging for tenuring. Or<br>
<br>
-Xverbose:gc.tenuring<br>
<br>
that could be equal to what that flag prints today. Let's see what
the serviceability team thinks since they are the ones who will
actually implement this in the end.<br>
<br>
Another solution that I don't really like but guess is easier to
implement is to add the current verbose flag to the actual message
so that the logs can be filtered based on that. But this will
clutter the messages and we would still have the problem to decide
on which level things should get logged.<br>
/Jesper<br>
<br>
<br>
On 2012-06-20 07:28, Kirk Pepperdine wrote:
<blockquote cite="mid:1BC2C076-7066-406A-87B2-A6F4618B7ECC@kodewerk.com" type="cite">Hi Jesper,
<div><br>
</div>
<div>I did read the spec and I do like the ability to specify the
"component" that you'd like to log information from. So I feel
that is a great improvement over the (broken) pattern
established in every major logging Java framework. I'm going to
stick to GC logging just because I've spent so much time
puzzling over them and adjusting my parser to deal with all the
changes that have continuously crept into them. While 'm
certainly not going to argue for keeping the current GC logging
framework what I will say is that it's not all bad in that the
flags that have been provided to me are almost always
semantically meaningful in that they tell me what I'm going to
see. In this spirit I'd like to see a category like
TenuringDetails for example. Is this information INFO, DEBUG, or
TRACE? hard to say but it's clearly TenuringDetails and so this
is a subcategory that I'd like to define and it's clearly not a
subcategory that you'd want to define a generalize logging
framework. And it is here that this specification over-reaches.
It tries to define logging categories that are not only are
devoid of meaning, they assume a hierarchical structure to them.
Going back to GC logging I would argue that while there is some
hierarchy in there, most of the messages don't nicely fit into
this imposed hierarchical developer centric list of categories.</div>
<div><br>
</div>
<div>I think we could easily both agree that it would be
ridiculous for me to ask that you add PrintTunuring to the list
of levels yet that is exactly what I want. So I guess what I'm
asking is, what would the spec look like if you removed the log
levels from it and allowed me to define my own or to not even
use levels at all.</div>
<div><br>
</div>
<div>Regards,</div>
<div>Kirk</div>
<div><br>
</div>
<div>On 2012-06-20, at 1:03 AM, Jesper Wilhelmsson wrote:</div>
<div>
<div><br class="Apple-interchange-newline">
<blockquote type="cite">
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
<div bgcolor="#FFFFFF" text="#000000"> Hi Kirk,<br>
<br>
To select what should be logged there should be logging
modules. A module could be for example class loading, gc,
jit compiler etc. The logging level is just a way to
control how much logging you want. Setting gc=info would
give you some basic gc logging while gc=debug would give
you more detailed info.<br>
<br>
A typical command line could look like<br>
<pre><code>
-Xverbose:gc=debug,finalizer=info,compiler,alloc,cookies=trace</code></pre>
/Jesper<br>
<br>
<br>
On 2012-06-19 23:44, Kirk Pepperdine wrote:
<blockquote cite="mid:25BA359D-58E7-48F3-9575-E555A31FE3C2@kodewerk.com" type="cite">Hi,
<div><br>
</div>
<div>I see the logging framework JEP finally was
published. This is great news.</div>
<div><br>
</div>
<div>I'd like to comment on this quality</div>
<div><br>
</div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; ">"Logging is
performed at different levels: error, warning, info,
debug, trace"</span></div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; "><br>
</span></div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; "><span class="Apple-style-span" style="font-family:
Helvetica; line-height: normal; font-size: medium;
">If we accept the problems associated with level
based logging, these name work for generic
frameworks such as Log4J and JDK logging. However,
the names are meaningless in that they carry no
semantic context with what would be logged. The
nice thing about the current set of flags is they
convey the information that will be printed.</span></span></div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; "><span class="Apple-style-span" style="font-family:
Helvetica; line-height: normal; font-size: medium;
"><br>
</span></span></div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; "><span class="Apple-style-span" style="font-family:
Helvetica; line-height: normal; font-size: medium;
">On the question of log levels. I was hoping that
we would have learned from the follies of using
level based logging instead of a digital or tag
based system. IOWs a on or off different aspects
without having to eat the whole elephant of
records that some developer arbitrarily decided
should be dumped at a particular log level. One
can level tags.. but you can't get tags or digital
behaviour from levels.</span></span></div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; "><span class="Apple-style-span" style="font-family:
Helvetica; line-height: normal; font-size: medium;
"><br>
</span></span></div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; "><span class="Apple-style-span" style="font-family:
Helvetica; line-height: normal; font-size: medium;
">Kind regards,</span></span></div>
<div><span style="font-family: 'Bitstream Vera Sans', 'Luxi Sans', Verdana, Arial, Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 13px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; "><span class="Apple-style-span" style="font-family:
Helvetica; line-height: normal; font-size: medium;
">Kirk Pepperdine</span></span></div>
</blockquote>
</div>
<span><jesper_wilhelmsson.vcf></span></blockquote>
</div>
<br>
</div>
</blockquote>
</div>
<span><jesper_wilhelmsson.vcf></span></blockquote></div><br></div></blockquote></div><br></div></div></blockquote></div><br></div></div></body></html>