That doesn’t seem like a bad idea at all. Have you done that before or are you 
at least familiar with the process so that I could begin working on that?

-Rob

> On Jul 19, 2018, at 2:04 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
> We should really propose a new Logging JSR.  I would make sure it includes 
> the ability for the compiler to provide the class name, method name and line 
> number as “special” variables.
> 
> Ralph
> 
>> On Jul 19, 2018, at 10:53 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
>> 
>> Maybe the smallest feature we could/should start with it a
>> class-level @ClassLogger() annotation which create a static final Logger
>> initialized with the class name. Too bad Java does not have what Smalltalk
>> calls class instance variables.
>> 
>> I am using "ClassLogger" like JUnit has ClassRule so it leave room for
>> a @Logger like JUnit has @Rule.
>> 
>> Gary
>> 
>> On Thu, Jul 19, 2018 at 11:43 AM Rob Tompkins <chtom...@gmail.com> wrote:
>> 
>>> 
>>> 
>>>> On Jul 19, 2018, at 1:41 PM, Ralph Goers <ralph.go...@dslextreme.com>
>>> wrote:
>>>> 
>>>> 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.
>>> 
>>> Right that makes sense to me. Hence it being an after thought, and I like
>>> Gary’s suggestion of a compile time dependency for the sake of weaving.
>>> 
>>>> 
>>>> 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