> On Jul 19, 2018, at 11:48 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> FTR: https://projectlombok.org/features/log
> 
> On Thu, Jul 19, 2018 at 8:48 AM Gary Gregory <garydgreg...@gmail.com> wrote:
> 
>> 
>> 
>> On Thu, Jul 19, 2018 at 8:26 AM Rob Tompkins <chtom...@gmail.com> wrote:
>> 
>>> 
>>> 
>>>> On Jul 19, 2018, at 10:17 AM, Gary Gregory <garydgreg...@gmail.com>
>>> wrote:
>>>> 
>>>> On Thu, Jul 19, 2018 at 8:07 AM Rob Tompkins <chtom...@gmail.com>
>>> wrote:
>>>> 
>>>>> 
>>>>> 
>>>>>> On Jul 19, 2018, at 9:29 AM, Gary Gregory <garydgreg...@gmail.com>
>>>>> wrote:
>>>>>> 
>>>>>> Annotation-based logging comes up once in a while here but we have not
>>>>>> implemented it. Project Lombok does that IIRC.
>>>>> 
>>>>> Any reason for having not yet implemented it, or just the standard
>>> “time”?
>>>>> 
>>>> 
>>>> It's just more "stuff" and yes, time. And also, no one's wanted to put
>>> the
>>>> time in.
>>>> 
>>>> But then there are design issues and adding more "stuff" to the API jar.
>>>> 
>>>> - Would you allow @Log(level=Level.TRACE) (should be the default?) and
>>>> @Log(level=Level.DEBUG)
>>>> - What happens if you say both?
>>>> - Should you be able to break it up and only say @LogEntry() or
>>> @LogExit().
>>>> - What about @Log(file="${user.home}\foo.log")
>>>> - and on and on ;-)
>>> 
>>> Definitely fair points, I think I would try to go as simple as possible
>>> in a first pass…right?
>>> 
>>> @Log
>>> @Log(level=X)
>>> 
>> 
>> Well, yes. But we need to think about the scope of the annotation. The
>> name @Log is as broad as you can think of making the name. So if we want to
>> put more in there later, then we need to make sure that's the best name.
>> 
>> Do you think
>> 
>> @Log()
>> 
>> could be the default for (for example)
>> 
>> @Log(level=Level.TRACE, entry=true, entryParameters=ALL, exit=true,
>> exitValue=true)
>> 
>> Where entryParameters (if on a method) would let me list which params for
>> that methods to log)
>> 
>> How do I avoid logging a password argument for example? Sounds like we can
>> do away with entryParameters if we have a @LogHide to annotate a
>> parameter.
>> 
>> I could see that as step one but we need to think about all that we would
>> want to do to make sure @Log is the right name. What's a name that says log
>> all entries and exits?  @LogEntryExit?
>> 
>> Overall I would think that this kind of annotated class would change that
>> class' byte codes after compilation so that there are no runtime
>> requirements even for annotations. I certainly would not want to leave
>> behind clues like @LogHide to would be attackers....
>> 
>> Thoughts?

I think that @Log is the wrong name because it’s quite vague. Maybe 
@LogMethodCalls, or as you suggest @LogEntryExit.

I like the signature you suggested @Gary.

@Matt - As for mechanics, I would think we would want to do compile time byte 
code weaving. (Is there any appetite for using aspectJ? Feels like a large ask 
to add a dependency to log4j2 though.)

>> 
>> Gary
>> 
>> 
>>> -Rob
>>> 
>>>> 
>>>> Gary
>>>> 
>>>> 
>>>>> 
>>>>>> 
>>>>>> Gary
>>>>>> 
>>>>>> On Thu, Jul 19, 2018, 07:15 Rob Tompkins <chtom...@gmail.com> wrote:
>>>>>> 
>>>>>>> Hey folks,
>>>>>>> 
>>>>>>> I’m curious if anyone has thought about adding a class level @Log
>>>>>>> annotation such that upon debug or trace configuration, method entry
>>> and
>>>>>>> exit gets automatically logged?
>>>>>>> 
>>>>>>> -Rob
>>>>> 
>>>>> 
>>> 
>>> 

Reply via email to