An actual JSR would be great, and with the current development pace of
Java, I think it could actually be accepted.

On Thu, 19 Jul 2018 at 14:35, Rob Tompkins <chtom...@gmail.com> wrote:

>
>
> > On Jul 19, 2018, at 2:35 PM, Ralph Goers <ralph.go...@dslextreme.com>
> wrote:
> >
> > It has been brought up before. You can read about the JSR process at
> http://jcp.org <http://jcp.org/>.
>
> Seems like we’d want to make this a collaborative effort, particularly
> because they look for a collection of experts. I’ll see if I can come up
> with a draft that we could go over here.
>
> -Rob
>
> >
> > Ralph
> >
> >> On Jul 19, 2018, at 11:19 AM, Rob Tompkins <chtom...@gmail.com> wrote:
> >>
> >> 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
> >>>>>>
> >>>>>
> >>>>>
> >>>
> >>>
> >>
> >>
> >
>
>

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

Reply via email to