I think a trace should be added for all return statements. If the method
has no return statement, then it just goes at the end. I agree with the
exceptional case Gary mentions as well.

On 16 February 2016 at 16:55, Gary Gregory <garydgreg...@gmail.com> wrote:

> I did not explain myself correctly because I am talking about editing
> class files, not java files. Or being part of the byte code generation,
> however that works.
>
> Also the trace on finally you describe is a no go for me. I want to *not*
> see a trace exit when an exception is thrown.
>
> Gary
> On Feb 16, 2016 12:53 PM, "Ralph Goers" <ralph.go...@dslextreme.com>
> wrote:
>
>> If it worked that way the annotation processor would have to act as
>> pre-processor and generate new .java files that would then be compiled. My
>> expectation is that this functionality would be built into the existing
>> annotation processor and the logging would be added during the compilation
>> process, so users wouldn’t actually be able to see the logging calls in
>> their source code.  As such they could just be logger.trace calls with the
>> correct Marker, etc added.  Essentially it would be as if the pattern
>>
>> logger.trace(…. entry);
>> try {
>>   existing code
>> } finally {
>>    logger.trace(… exit);
>> }
>>
>> was injected into every method enabled for logging.
>>
>> Ralph
>>
>> On Feb 16, 2016, at 12:40 PM, Gary Gregory <garydgreg...@gmail.com>
>> wrote:
>>
>> In my mind, the annotations would cause a build to inject code into class
>> files using the new traceEntry/Exit APIs. That's the easiest to understand
>> IMO. It would also generate the simplest code. It also does not force you
>> into using annotations if you want to "see" the real thing in your code.
>>
>> Gary
>>
>> On Tue, Feb 16, 2016 at 9:21 AM, Matt Sicker <boa...@gmail.com> wrote:
>>
>>> I'd much prefer the annotation approach.
>>>
>>> On 16 February 2016 at 10:35, Ralph Goers <ralph.go...@dslextreme.com>
>>> wrote:
>>>
>>>> SLF4J created XLogger to do this. I wasn’t really happy with that and
>>>> so added the methods to the Logger class when I started Log4j 2.
>>>>
>>>> The more I think about this I am wondering if the effort shouldn’t just
>>>> be spent on implementing the annotations rather than arguing about this
>>>> stuff. The annotations don’t actually require these methods to be able to
>>>> implement the functionality.
>>>>
>>>> Ralph
>>>>
>>>> On Feb 16, 2016, at 9:20 AM, Gary Gregory <garydgreg...@gmail.com>
>>>> wrote:
>>>>
>>>> Well, you just need one interface: FlowLogger and all traceEntry and
>>>> traceExit methods can live there. But that means that a user must hold on
>>>> to 2 loggers for a given class for example. Unless FlowLogger extends
>>>> Logger. Then you'd also need to add getFlowLogger methods to LogManager.
>>>>
>>>> Which is better?
>>>> On Feb 15, 2016 7:58 PM, "Paul Benedict" <pbened...@apache.org> wrote:
>>>>
>>>>> You could create special interfaces for these sets of special methods.
>>>>> There is not a design rule that says Logger must be the interface that 
>>>>> does
>>>>> all things.
>>>>> Yep, that's definitely one of the candidates for a solution.
>>>>>
>>>>> Sent from my iPhone
>>>>>
>>>>> On 2016/02/16, at 9:43, Gary Gregory <garydgreg...@gmail.com> wrote:
>>>>>
>>>>> Which is one of the reasons I proposed "level logging". I'm on my
>>>>> phone so I can't do more that say there is a branch and Jira for my
>>>>> proposal. You only add a method once, not once per level. Then you say
>>>>> logger.alevel.log(...).
>>>>>
>>>>> Gary
>>>>> On Feb 15, 2016 3:47 PM, "Remko Popma" <remko.po...@gmail.com> wrote:
>>>>>
>>>>>> A word of caution: the Logger API already has 209 method (and I think
>>>>>> a few just got added). This will explode if we just add "var-arg 
>>>>>> unrolling"
>>>>>> methods for 1 param, 2 params, 3 params, ...  (up to how many?) 
>>>>>> Especially
>>>>>> if we want to also prevent auto boxing in all possible combinations of 
>>>>>> the
>>>>>> primitive types boolean, long and double.
>>>>>>
>>>>>> There may be other ways to accomplish this. Let's think about this a
>>>>>> bit longer. I'll add a Jira for this in the no-GC epic.
>>>>>>
>>>>>> Sent from my iPhone
>>>>>>
>>>>>> On 2016/02/16, at 1:59, Matt Sicker <boa...@gmail.com> wrote:
>>>>>>
>>>>>> Considering the garbage-free epic, this sounds like a good idea to
>>>>>> bake in from the start.
>>>>>>
>>>>>> On 15 February 2016 at 10:39, Gary Gregory <garydgreg...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi All:
>>>>>>>
>>>>>>> My my custom flow logger, I avoid auto-boxing on traceExit() calls
>>>>>>> by having primitive versions of the APIs. We could do the same and avoid
>>>>>>> auto-boxing unless a logger's level is enabled.
>>>>>>>
>>>>>>> This generates a lot less garbage when, for example, we flow trace
>>>>>>> our JDBC APIs and get 50m rows and 50 columns per row.
>>>>>>>
>>>>>>> Thoughts?
>>>>>>>
>>>>>>> Gary
>>>>>>>
>>>>>>> --
>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>>>>>>> Java Persistence with Hibernate, Second Edition
>>>>>>> <http://www.manning.com/bauer3/>
>>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>>>>> Blog: http://garygregory.wordpress.com
>>>>>>> Home: http://garygregory.com/
>>>>>>> Tweet! http://twitter.com/GaryGregory
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Matt Sicker <boa...@gmail.com>
>>>>>>
>>>>>>
>>>>
>>>
>>>
>>> --
>>> Matt Sicker <boa...@gmail.com>
>>>
>>
>>
>>
>> --
>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
>> Java Persistence with Hibernate, Second Edition
>> <http://www.manning.com/bauer3/>
>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>> Spring Batch in Action <http://www.manning.com/templier/>
>> Blog: http://garygregory.wordpress.com
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory
>>
>>
>>


-- 
Matt Sicker <boa...@gmail.com>

Reply via email to