I created a JIRA ticket for this. https://issues.apache.org/jira/browse/LOG4J2-2360
On Thu, Mar 15, 2018 at 11:37 PM, Jeff Shaw <shawj...@gmail.com> wrote: > Thanks, Remko. There is no ticket that I know of. This is something I was > inspired to work on before I gave any thought to a formal process. > > Sent from my phone > > > On Mar 15, 2018, at 11:26 PM, Remko Popma <remko.po...@gmail.com> wrote: > > > > I am interested and planning to take a look if others don’t beat me to > it. Is there a corresponding JIRA ticket? > > > > (Shameless plug) Every java main() method deserves http://picocli.info > > > >> On Mar 16, 2018, at 5:33, Jeffrey Shaw <shawj...@gmail.com> wrote: > >> > >> Hi, just hoping to get some eyes on this again. > >> > >>> On Fri, Feb 23, 2018 at 10:43 PM, Jeffrey Shaw <shawj...@gmail.com> > wrote: > >>> > >>> closed that one and opened a new one with the commits squashed > >>> https://github.com/apache/logging-log4j2/pull/152 > >>> > >>>> On Fri, Feb 23, 2018 at 10:11 PM, Jeffrey Shaw <shawj...@gmail.com> > wrote: > >>>> > >>>> done! https://github.com/apache/logging-log4j2/pull/151 > >>>> > >>>> On Fri, Feb 23, 2018 at 9:22 PM, Gary Gregory <garydgreg...@gmail.com > > > >>>> wrote: > >>>> > >>>>> On Fri, Feb 23, 2018 at 7:02 PM, Jeffrey Shaw <shawj...@gmail.com> > >>>>> wrote: > >>>>> > >>>>>> Hi All, > >>>>>> I spent some more time on this tonight. I've brought my code up to > >>>>> date for > >>>>>> log4j versions 2 and 3. version 2 > >>>>>> <https://github.com/shawjef3/logging-log4j2/tree/message- > >>>>>> location-release-2.x> > >>>>>> version > >>>>>> 3 <https://github.com/shawjef3/logging-log4j2/tree/message-location > > > >>>>>> Per Ralph Goers and some others I removed SourceLocation and > reverted > >>>>> back > >>>>>> to StackTraceElement. > >>>>>> > >>>>> > >>>>> Hello, > >>>>> > >>>>> Can you create pull requests so we can see better what you are > proposing? > >>>>> > >>>>> Thank you! > >>>>> Gary > >>>>> > >>>>> > >>>>> > >>>>>> > >>>>>> In case this thread is lost in your email, the changes I worked on > >>>>> expose > >>>>>> the location part of the Message to loggers, so that if the source > >>>>> location > >>>>>> is known at compile time, it can be added to the log with no runtime > >>>>> cost. > >>>>>> An example use is the scala loggers > >>>>>> <https://github.com/shawjef3/logging-log4j-scala> which are > >>>>> implemented > >>>>>> with macros, and therefore have that information available at no > cost > >>>>> to > >>>>>> the developer, either. > >>>>>> > >>>>>> On Sat, Dec 23, 2017 at 2:14 PM, Mikael Ståldal <mi...@apache.org> > >>>>> wrote: > >>>>>> > >>>>>>> Yes, StackTraceElement does not allow null methodName. > >>>>>>> > >>>>>>> But what about using the empty string, or a string like "<unknown>" > >>>>> if it > >>>>>>> is not possible to get? > >>>>>>> > >>>>>>> > >>>>>>>> On 2017-12-22 20:26, Jeffrey Shaw wrote: > >>>>>>>> > >>>>>>>> I didn't know about clirr, but I can try running that. I tried to > >>>>> not > >>>>>>>> break > >>>>>>>> any existing public methods. > >>>>>>>> > >>>>>>>> I created SourceLocation because I think for Scala macros, the > >>>>> method > >>>>>> name > >>>>>>>> can not exist, but StackTraceElement requires a method name. I'll > >>>>> double > >>>>>>>> check this. > >>>>>>>> > >>>>>>>> On Thu, Dec 21, 2017 at 12:40 AM, Ralph Goers < > >>>>>> ralph.go...@dslextreme.com > >>>>>>>>> > >>>>>>>> wrote: > >>>>>>>> > >>>>>>>> I’m not sure I would be comfortable applying the patch this way. > >>>>> Have > >>>>>> you > >>>>>>>>> run a clirr report on your changes? I am concerned that this > could > >>>>>> break > >>>>>>>>> customizations that users might have made. What is the reason > >>>>>>>>> SourceLocation had to be used instead of StackTraceElement? > >>>>>>>>> > >>>>>>>>> Ralph > >>>>>>>>> > >>>>>>>>> On Dec 20, 2017, at 9:58 PM, Jeffrey Shaw <shawj...@gmail.com> > >>>>> wrote: > >>>>>>>>>> > >>>>>>>>>> It looks like the location only ever gets the file name, because > >>>>>> that's > >>>>>>>>>> what StackTraceElement gives. So that's fine. > >>>>>>>>>> > >>>>>>>>>> I think I'm ready for a formal review. Should I create pull > >>>>> requests > >>>>>> on > >>>>>>>>>> github for https://github.com/shawjef3/lo > >>>>> gging-log4j2/tree/message- > >>>>>>>>>> > >>>>>>>>> location > >>>>>>>>> > >>>>>>>>>> and https://github.com/shawjef3/logging-log4j-scala/tree/ > >>>>>>>>>> > >>>>>>>>> message-location, > >>>>>>>>> > >>>>>>>>>> or is there another process? > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> On Wed, Dec 20, 2017 at 2:11 PM, Matt Sicker <boa...@gmail.com> > >>>>>> wrote: > >>>>>>>>>> > >>>>>>>>>> I think that should be configurable in the layout options. > >>>>>>>>>>> > >>>>>>>>>>> On 20 December 2017 at 13:04, Dominik Psenner < > >>>>> dpsen...@gmail.com> > >>>>>>>>>>> > >>>>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>> Could a compile time environment variable like SrcRootDirectory > >>>>> do > >>>>>> the > >>>>>>>>>>>> > >>>>>>>>>>> job? > >>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> On 20 Dec 2017 7:49 p.m., "Jeffrey Shaw" <shawj...@gmail.com> > >>>>>> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>> I got it working using a custom ExtendedLogger instead of > >>>>> mocking. > >>>>>>>>>>>>> > >>>>>>>>>>>>> It looks like for file name, there are only two options. We > can > >>>>>> have > >>>>>>>>>>>>> > >>>>>>>>>>>> the > >>>>>>>>>>> > >>>>>>>>>>>> file name, or the full path to the file. The path relative to > >>>>> the > >>>>>>>>>>>>> > >>>>>>>>>>>> project > >>>>>>>>>>> > >>>>>>>>>>>> root looks impossible to get, unless we look for magic names > >>>>> like > >>>>>>>>>>>>> > >>>>>>>>>>>> "src". > >>>>>>>>>>> > >>>>>>>>>>>> Any opinion as to which to use? I'm tempted to use just the > file > >>>>>> name, > >>>>>>>>>>>>> since the full path to the file seems intrusive, and is > >>>>> dependent > >>>>>> on > >>>>>>>>>>>>> > >>>>>>>>>>>> the > >>>>>>>>>>> > >>>>>>>>>>>> build machine. > >>>>>>>>>>>>> > >>>>>>>>>>>>> On Wed, Dec 20, 2017 at 11:35 AM, Matt Sicker < > >>>>> boa...@gmail.com> > >>>>>>>>>>>>> > >>>>>>>>>>>> wrote: > >>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>> It's possible that macros and mocks don't work well together, > >>>>>> though > >>>>>>>>>>>>>> > >>>>>>>>>>>>> that's > >>>>>>>>>>>>> > >>>>>>>>>>>>>> just a guess. > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> On 20 December 2017 at 00:00, Jeff Shaw <shawj...@gmail.com > > > >>>>>> wrote: > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> I should add that manually testing it works. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Sent from my phone > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> On Dec 20, 2017, at 12:45 AM, Jeffrey Shaw < > >>>>> shawj...@gmail.com> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> I added some tests for traced, but they don't pass. The > >>>>> mocks > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> say, > >>>>>>>>>>> > >>>>>>>>>>>> "Actually, there were zero interactions with this mock." I > could > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> use > >>>>>>>>>>> > >>>>>>>>>>>> some > >>>>>>>>>>>>> > >>>>>>>>>>>>>> help getting these two tests to work. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> https://github.com/shawjef3/logging-log4j-scala/blob/ > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> message-location/log4j-api-scala_2.12/src/test/scala/org/ > >>>>>>>>>>>>>>> apache/logging/log4j/scala/LoggerTest.scala#L574 > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> On Sun, Dec 17, 2017 at 8:50 PM, Jeffrey Shaw < > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> shawj...@gmail.com > >>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Thanks for the encouragement everyone! I never worked on > an > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Apache > >>>>>>>>>>> > >>>>>>>>>>>> project before and had no idea what to expect from the > >>>>> community. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> I've made some progress. One cool thing I added was a > >>>>> `traced` > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> method > >>>>>>>>>>>>> > >>>>>>>>>>>>>> (source), which does the work you'd want for traceEntry, > >>>>>> traceExit, > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> and > >>>>>>>>>>>> > >>>>>>>>>>>>> throwing. It would be cool to add catching as well, but that > >>>>> would > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> require > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> tree traversal, which is beyond me at the moment. I also > >>>>> haven't > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> figured > >>>>>>>>>>>>> > >>>>>>>>>>>>>> out how to add the parameter lists. Anyway, an example: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> before: > >>>>>>>>>>>>>>>>> def f() = {...} > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> after: > >>>>>>>>>>>>>>>>> def f() = logger.traced(Level.INFO) {...} > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> On Mon, Dec 11, 2017 at 9:55 PM, Matt Sicker < > >>>>> boa...@gmail.com > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>> wrote: > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> From the little I've worked with macros (worked more with > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> scalameta > >>>>>>>>>>>> > >>>>>>>>>>>>> and > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> shapeless), that looks good so far. If you can add some > unit > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> tests, > >>>>>>>>>>>> > >>>>>>>>>>>>> then > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> we'd be happy to merge! > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> On 11 December 2017 at 20:41, Jeffrey Shaw < > >>>>>> shawj...@gmail.com > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>> wrote: > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Great news! I'm able to run LoggingApp in the scala api > >>>>> repo > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> without > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> it > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> calling StackLocatorUtil.calcLocation, but it prints the > >>>>> same > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> messages as > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> before. I have to use my patch to log4j of course. > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> See https://github.com/shawjef3/lo > >>>>> gging-log4j-scala/commits/ > >>>>>>>>>>>>>>>>>>> message-location > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> On Sun, Dec 10, 2017 at 3:56 PM, Matt Sicker < > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> boa...@gmail.com > >>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> This sounds like it'd make a great addition to the > Scala > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> API! > >>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> On 9 December 2017 at 15:36, Jeffrey Shaw < > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> shawj...@gmail.com> > >>>>>>>>>>>> > >>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> Ralph, I agree with you entirely. My intent for these > >>>>> new > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> log > >>>>>>>>>>>> > >>>>>>>>>>>>> methods > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> is > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> that they only be called from compile-time generated > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> code. > >>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> On Sat, Dec 9, 2017 at 4:30 PM, Ralph Goers < > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> ralph.go...@dslextreme.com> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> I don’t understand how this is a good idea. To use > this > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> you > >>>>>>>>>>>> > >>>>>>>>>>>>> would > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> need > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> to > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> do something like: > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> Message msg = new StringMessage(getCaller(), “My > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> Message”); > >>>>>>>>>>>> > >>>>>>>>>>>>> logger.debug(msg); > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> Unfortunately the line number would point to the > line > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> where > >>>>>>>>>>>> > >>>>>>>>>>>>> getCaller() > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> is > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> called not to the logger statement. > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> I had thought about modifying AbstractLogger to do > >>>>>>>>>>>>>>>>>>>>>> public void debug(final Marker marker, final String > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> message) > >>>>>>>>>>>>> > >>>>>>>>>>>>>> { > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> logIfEnabled(getCaller(), Level.DEBUG, marker, > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> message, > >>>>>>>>>>>> > >>>>>>>>>>>>> (Throwable) > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> null); > >>>>>>>>>>>>>>>>>>>>>> } > >>>>>>>>>>>>>>>>>>>>>> instead of the current > >>>>>>>>>>>>>>>>>>>>>> public void debug(final Marker marker, final String > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> message) > >>>>>>>>>>>>> > >>>>>>>>>>>>>> { > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> logIfEnabled(FQCN, Level.DEBUG, marker, message, > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> (Throwable) > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> null); > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> } > >>>>>>>>>>>>>>>>>>>>>> But the amount of changes required to get it into > the > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> LogEvent > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> was > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> large. > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> OTOH, if we create a CallerLocationMessage that > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> contains > >>>>>>>>>>> > >>>>>>>>>>>> the > >>>>>>>>>>>>> > >>>>>>>>>>>>>> StackTraceElement and then have existing Messages > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> extend > >>>>>>>>>>> > >>>>>>>>>>>> that > >>>>>>>>>>>>> > >>>>>>>>>>>>>> then we > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> could > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> store the location in the Message if it is a > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> CallerLocationMessage. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Calling > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> getCaller() in this way would be much better since > it > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> is > >>>>>>>>>>> > >>>>>>>>>>>> at a > >>>>>>>>>>>>> > >>>>>>>>>>>>>> fixed > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> depth > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> from the caller. > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> With Java 9 this could become: > >>>>>>>>>>>>>>>>>>>>>> public void debug(final Marker marker, final String > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> message) > >>>>>>>>>>>>> > >>>>>>>>>>>>>> { > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> logIfEnabled(stackWalker.walk( > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> s->s.skip(1).findFirst(), > >>>>>>>>>>>>> > >>>>>>>>>>>>>> Level.DEBUG, > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> marker, message, (Throwable) null); > >>>>>>>>>>>>>>>>>>>>>> } > >>>>>>>>>>>>>>>>>>>>>> although that would pass a StackFrame instead of a > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> StackTraceElement. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> The > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> only problems with this is that there is still some > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> overhead > >>>>>>>>>>>>> > >>>>>>>>>>>>>> in > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> calling > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> StackWalker like this. Also, if this is called from a > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> facade, > >>>>>>>>>>>>> > >>>>>>>>>>>>>> such as > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> log4j-slf4j-impl then the number of levels that have to > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> be > >>>>>>>>>>>> > >>>>>>>>>>>>> skipped > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> would > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> be > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> different. > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> I would really prefer if there was some way to > capture > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> the > >>>>>>>>>>>> > >>>>>>>>>>>>> line > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> number > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> information for the various loggers when the > annotation > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> processor > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> runs > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> compile time. > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> Ralph > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> On Dec 9, 2017, at 1:22 PM, Jeffrey Shaw < > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> shawj...@gmail.com > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> Thanks for the link, Mikael. I'll take a look at > it. > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> I added some plumbing to core to allow clients to > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> pass > >>>>>>>>>>> > >>>>>>>>>>>> a > >>>>>>>>>>>> > >>>>>>>>>>>>> StackTraceElement > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> to loggers. I'd like a code review. I'm happy to > try > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> other > >>>>>>>>>>>>> > >>>>>>>>>>>>>> methods. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> See > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> the > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> following commit. > >>>>>>>>>>>>>>>>>>>>>>> https://github.com/shawjef3/logging-log4j2/commit/ > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> 9c42073e9ca4f25a2f4075b1791eee2893534c54 > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> On Sat, Dec 9, 2017 at 10:09 AM, Mikael Ståldal < > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> mi...@apache.org> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> Have you tried the Log4j Scala API? > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> http://logging.apache.org/ > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> log4j/2.x/manual/scala-api. > >>>>>>>>>>> > >>>>>>>>>>>> html > >>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> It does currently not support this, but it uses > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> Scala > >>>>>>>>>>> > >>>>>>>>>>>> macros, and > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> this > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> could be added there. But log4j-api and/or > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> log4j-core > >>>>>>>>>>> > >>>>>>>>>>>> probably > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> needs > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> to > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> adapted as well. > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> On 2017-12-09 07:30, Jeffrey Shaw wrote: > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> Hello, > >>>>>>>>>>>>>>>>>>>>>>>>> I've found that I am able to use Scala macros to > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> provide > >>>>>>>>>>>>> > >>>>>>>>>>>>>> compile-time > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> source information for log messages. However, I > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> don't > >>>>>>>>>>> > >>>>>>>>>>>> see > >>>>>>>>>>>>> > >>>>>>>>>>>>>> a way > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> to > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> inject > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> this into log4j's logging mechanism. > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>> I'm wondering if there is something I'm missing, > or > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> if > >>>>>>>>>>>> > >>>>>>>>>>>>> LogEvent's > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> getSource > >>>>>>>>>>>>>>>>>>>>>>>>> method could be duplicated in Message. > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>> We could then have zero-overhead location > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> information > >>>>>>>>>>> > >>>>>>>>>>>> in > >>>>>>>>>>>>> > >>>>>>>>>>>>>> logs. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> I'm > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> thinking > >>>>>>>>>>>>>>>>>>>>>>>>> that tools other than Scala could also take > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> advantage > >>>>>>>>>>> > >>>>>>>>>>>> of > >>>>>>>>>>>>> > >>>>>>>>>>>>>> this. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> -- > >>>>>>>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> -- > >>>>>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> -- > >>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> -- > >>>>>>>>>>> Matt Sicker <boa...@gmail.com> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>> > >>>> > >>> >