To be clear, Log4j-core should have no required dependencies other than 
Log4j-API. And we would like to keep optional dependencies to a minimum.

Ralph

> On Jul 19, 2018, at 10:36 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> eOn Thu, Jul 19, 2018 at 10:19 AM Rob Tompkins <chtom...@gmail.com 
> <mailto:chtom...@gmail.com>> wrote:
> 
>> 
>> 
>>> 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.)
>> 
> 
> I've not lloked at AspectJ for a long time, not sure it requires a runtime;
> I think we want a compile time only dep, Apache Commson Weaver or Apache
> Commons BCEL come to mind.
> 
> Gary
> 
> 
>> 
>>>> 
>>>> Gary
>>>> 
>>>> 
>>>>> -Rob
>>>>> 
>>>>>> 
>>>>>> Gary
>>>>>> 
>>>>>> 
>>>>>>> 
>>>>>>>> 
>>>>>>>> Gary
>>>>>>>> 
>>>>>>>> On Thu, Jul 19, 2018, 07:15 Rob Tompkins <chtom...@gmail.com 
>>>>>>>> <mailto: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