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>
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>>> 
>> 

Reply via email to