Are you planning on fixing this? Ralph
> On Nov 11, 2017, at 5:15 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote: > > Because the caller of newLogger(name) is AbstractLogger its ClassLoader will > always be used. You need the ClassLoader of the caller of getLogger(). > > Ralph > >> On Nov 11, 2017, at 3:43 PM, Gary Gregory <garydgreg...@gmail.com> wrote: >> >> Please code review git master. I'm not sure I have the class loader right. >> >> Gary >> >> On Sat, Nov 11, 2017 at 2:54 PM, Ralph Goers <ralph.go...@dslextreme.com> >> wrote: >> >>> Oh, but you probably don’t want to extend AbstractLogger. You really want >>> the FQCN of the caller to be able to identify the ClassLoader and >>> LoggerContext to use and you won’t get that from AbstractLogger’s getLogger >>> method. >>> >>> Ralph >>> >>>> On Nov 11, 2017, at 2:45 PM, Ralph Goers <ralph.go...@dslextreme.com> >>> wrote: >>>> >>>> Sure. Look at TomcatLogger. It does exactly what you are trying to do. >>>> >>>> Ralph >>>> >>>>> On Nov 11, 2017, at 2:02 PM, Gary Gregory <garydgreg...@gmail.com> >>> wrote: >>>>> >>>>> The Javadoc for Log4j's LoggerAdapter says "This registry should not be >>>>> used for Log4j Loggers; it is instead used for creating bridges to other >>>>> external log systems.". >>>>> >>>>> In this case we are not bridging TO another log system. We are plugging >>>>> INTO Jetty's log system and subclassing Jetty's own LoggerAdapter class >>>>> (out convenience.) >>>>> >>>>> Further thoughts? >>>>> >>>>> Gary >>>>> >>>>> On Fri, Nov 10, 2017 at 9:25 PM, Matt Sicker <boa...@gmail.com> wrote: >>>>> >>>>>> IIRC, the easiest way to support it might be to use >>>>>> https://logging.apache.org/log4j/2.x/log4j-api/apidocs/ >>>>>> org/apache/logging/log4j/spi/AbstractLoggerAdapter.html >>>>>> >>>>>> On 10 November 2017 at 22:16, Gary Gregory <garydgreg...@gmail.com> >>> wrote: >>>>>> >>>>>>> I think you are correct... >>>>>>> >>>>>>> Gary >>>>>>> >>>>>>> On Fri, Nov 10, 2017 at 6:59 PM, Matt Sicker <boa...@gmail.com> >>> wrote: >>>>>>> >>>>>>>> Wouldn't this implementation contain incorrect caller location >>>>>>> information? >>>>>>>> >>>>>>>> On 10 November 2017 at 19:25, <ggreg...@apache.org> wrote: >>>>>>>> >>>>>>>>> Repository: logging-log4j2 >>>>>>>>> Updated Branches: >>>>>>>>> refs/heads/master aad2f132b -> 7d52f131e >>>>>>>>> >>>>>>>>> >>>>>>>>> [LOG4J2-2114] Provide a native Log4j 2 implementation of Eclipse >>>>>>> Jetty's >>>>>>>>> org.eclipse.jetty.util.log.Logger. >>>>>>>>> >>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/ >>>>>>>>> commit/7d52f131 >>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ >>>>>>>> 7d52f131 >>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ >>>>>>>> 7d52f131 >>>>>>>>> >>>>>>>>> Branch: refs/heads/master >>>>>>>>> Commit: 7d52f131ec1e000834bcb40343f3f2d41805c75a >>>>>>>>> Parents: aad2f13 >>>>>>>>> Author: Gary Gregory <ggreg...@apache.org> >>>>>>>>> Authored: Fri Nov 10 18:25:47 2017 -0700 >>>>>>>>> Committer: Gary Gregory <ggreg...@apache.org> >>>>>>>>> Committed: Fri Nov 10 18:25:47 2017 -0700 >>>>>>>>> >>>>>>>>> ------------------------------------------------------------ >>>>>> ---------- >>>>>>>>> log4j-appserver/pom.xml | 8 + >>>>>>>>> .../log4j/appserver/jetty/Log4j2Logger.java | 184 >>>>>>>> +++++++++++++++++++ >>>>>>>>> src/changes/changes.xml | 3 + >>>>>>>>> 3 files changed, 195 insertions(+) >>>>>>>>> ------------------------------------------------------------ >>>>>> ---------- >>>>>>>>> >>>>>>>>> >>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >>>>>>>>> 7d52f131/log4j-appserver/pom.xml >>>>>>>>> ------------------------------------------------------------ >>>>>> ---------- >>>>>>>>> diff --git a/log4j-appserver/pom.xml b/log4j-appserver/pom.xml >>>>>>>>> index e96b1fc..6acd77b 100644 >>>>>>>>> --- a/log4j-appserver/pom.xml >>>>>>>>> +++ b/log4j-appserver/pom.xml >>>>>>>>> @@ -34,6 +34,7 @@ >>>>>>>>> <docLabel>Web Documentation</docLabel> >>>>>>>>> <projectDir>/log4j-appserver</projectDir> >>>>>>>>> <tomcat.version>8.5.20</tomcat.version> >>>>>>>>> + <jetty.version>8.2.0.v20160908</jetty.version> <!-- Jetty 9 >>>>>>>>> requires Java 8 --> >>>>>>>>> <module.name>org.apache.logging.log4j.appserver</module.name> >>>>>>>>> </properties> >>>>>>>>> >>>>>>>>> @@ -56,6 +57,7 @@ >>>>>>>>> <groupId>org.apache.tomcat</groupId> >>>>>>>>> <artifactId>tomcat-catalina</artifactId> >>>>>>>>> <version>${tomcat.version}</version> >>>>>>>>> + <scope>provided</scope> >>>>>>>>> <exclusions> >>>>>>>>> <exclusion> >>>>>>>>> <groupId>org.apache.tomcat</groupId> >>>>>>>>> @@ -71,6 +73,12 @@ >>>>>>>>> </exclusion> >>>>>>>>> </exclusions> >>>>>>>>> </dependency> >>>>>>>>> + <dependency> >>>>>>>>> + <groupId>org.eclipse.jetty</groupId> >>>>>>>>> + <artifactId>jetty-util</artifactId> >>>>>>>>> + <version>${jetty.version}</version> >>>>>>>>> + <scope>provided</scope> >>>>>>>>> + </dependency> >>>>>>>>> >>>>>>>>> <!-- Test dependencies --> >>>>>>>>> <dependency> >>>>>>>>> >>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >>>>>>>>> 7d52f131/log4j-appserver/src/main/java/org/apache/logging/ >>>>>>>>> log4j/appserver/jetty/Log4j2Logger.java >>>>>>>>> ------------------------------------------------------------ >>>>>> ---------- >>>>>>>>> diff --git a/log4j-appserver/src/main/ >>> java/org/apache/logging/log4j/ >>>>>>>>> appserver/jetty/Log4j2Logger.java b/log4j-appserver/src/main/ >>>>>>>>> java/org/apache/logging/log4j/appserver/jetty/Log4j2Logger.java >>>>>>>>> new file mode 100644 >>>>>>>>> index 0000000..7d1ce14 >>>>>>>>> --- /dev/null >>>>>>>>> +++ b/log4j-appserver/src/main/java/org/apache/logging/log4j/ >>>>>>>>> appserver/jetty/Log4j2Logger.java >>>>>>>>> @@ -0,0 +1,184 @@ >>>>>>>>> +/* >>>>>>>>> + * Licensed to the Apache Software Foundation (ASF) under one or >>>>>> more >>>>>>>>> + * contributor license agreements. See the NOTICE file distributed >>>>>>> with >>>>>>>>> + * this work for additional information regarding copyright >>>>>> ownership. >>>>>>>>> + * The ASF licenses this file to You under the Apache license, >>>>>> Version >>>>>>>> 2.0 >>>>>>>>> + * (the "License"); you may not use this file except in compliance >>>>>>> with >>>>>>>>> + * the License. You may obtain a copy of the License at >>>>>>>>> + * >>>>>>>>> + * http://www.apache.org/licenses/LICENSE-2.0 >>>>>>>>> + * >>>>>>>>> + * Unless required by applicable law or agreed to in writing, >>>>>> software >>>>>>>>> + * distributed under the License is distributed on an "AS IS" >>> BASIS, >>>>>>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>>>>>>> implied. >>>>>>>>> + * See the license for the specific language governing permissions >>>>>> and >>>>>>>>> + * limitations under the license. >>>>>>>>> + */ >>>>>>>>> + >>>>>>>>> +package org.apache.logging.log4j.appserver.jetty; >>>>>>>>> + >>>>>>>>> +import org.apache.logging.log4j.LogManager; >>>>>>>>> +import org.eclipse.jetty.util.log.AbstractLogger; >>>>>>>>> +import org.eclipse.jetty.util.log.Logger; >>>>>>>>> + >>>>>>>>> +/** >>>>>>>>> + * Provides a native Apache Log4j 2 for Jetty logging. >>>>>>>>> + */ >>>>>>>>> +public class Log4j2Logger extends AbstractLogger { >>>>>>>>> + >>>>>>>>> + private final org.apache.logging.log4j.Logger logger; >>>>>>>>> + >>>>>>>>> + private final String name; >>>>>>>>> + >>>>>>>>> + public Log4j2Logger(final String name) { >>>>>>>>> + super(); >>>>>>>>> + this.name = name; >>>>>>>>> + this.logger = LogManager.getLogger(name); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + public Log4j2Logger() { >>>>>>>>> + this(""); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log. >>>>>> Logger#debug(java.lang.String, >>>>>>>>> java.lang.Object[]) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void debug(final String msg, final Object... args) { >>>>>>>>> + logger.debug(msg, args); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log. >>>>>> Logger#debug(java.lang.String, >>>>>>>>> java.lang.Throwable) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void debug(final String msg, final Throwable thrown) { >>>>>>>>> + logger.debug(msg, thrown); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log.Logger#debug(java.lang. >>>>>>>> Throwable) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void debug(final Throwable thrown) { >>>>>>>>> + logger.debug(thrown); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log.Logger#getName() >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public String getName() { >>>>>>>>> + return name; >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log.Logger#ignore(java.lang. >>>>>>>> Throwable) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void ignore(final Throwable ignored) { >>>>>>>>> + // TODO Auto-generated method stub >>>>>>>>> + >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log. >>>>>> Logger#info(java.lang.String, >>>>>>>>> java.lang.Object[]) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void info(final String msg, final Object... args) { >>>>>>>>> + logger.info(msg, args); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log. >>>>>> Logger#info(java.lang.String, >>>>>>>>> java.lang.Throwable) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void info(final String msg, final Throwable thrown) { >>>>>>>>> + logger.info(msg, thrown); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log.Logger#info(java.lang. >>>>>>> Throwable) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void info(final Throwable thrown) { >>>>>>>>> + logger.info(thrown); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log.Logger#isDebugEnabled() >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public boolean isDebugEnabled() { >>>>>>>>> + return logger.isDebugEnabled(); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log. >>>>>> AbstractLogger#newLogger(java. >>>>>>>>> lang.String) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + protected Logger newLogger(final String fullname) { >>>>>>>>> + return new Log4j2Logger(fullname); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log.Logger#setDebugEnabled( >>>>>>> boolean) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void setDebugEnabled(final boolean enabled) { >>>>>>>>> + warn("setDebugEnabled not implemented"); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log. >>>>>> Logger#warn(java.lang.String, >>>>>>>>> java.lang.Object[]) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void warn(final String msg, final Object... args) { >>>>>>>>> + logger.warn(msg, args); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log. >>>>>> Logger#warn(java.lang.String, >>>>>>>>> java.lang.Throwable) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void warn(final String msg, final Throwable thrown) { >>>>>>>>> + logger.warn(msg, thrown); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> + /* >>>>>>>>> + * (non-Javadoc) >>>>>>>>> + * >>>>>>>>> + * @see org.eclipse.jetty.util.log.Logger#warn(java.lang. >>>>>>> Throwable) >>>>>>>>> + */ >>>>>>>>> + @Override >>>>>>>>> + public void warn(final Throwable thrown) { >>>>>>>>> + logger.warn(thrown); >>>>>>>>> + } >>>>>>>>> + >>>>>>>>> +} >>>>>>>>> >>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >>>>>>>>> 7d52f131/src/changes/changes.xml >>>>>>>>> ------------------------------------------------------------ >>>>>> ---------- >>>>>>>>> diff --git a/src/changes/changes.xml b/src/changes/changes.xml >>>>>>>>> index 2bcefb2..070e4a1 100644 >>>>>>>>> --- a/src/changes/changes.xml >>>>>>>>> +++ b/src/changes/changes.xml >>>>>>>>> @@ -37,6 +37,9 @@ >>>>>>>>> <action issue="LOG4J2-2103" dev="mikes" type="add"> >>>>>>>>> XML encoding for PatternLayout. >>>>>>>>> </action> >>>>>>>>> + <action issue="LOG4J2-2114" dev="ggregory" type="add"> >>>>>>>>> + Provide a native Log4j 2 implementation of Eclipse Jetty's >>>>>>>>> org.eclipse.jetty.util.log.Logger. >>>>>>>>> + </action> >>>>>>>>> <action issue="LOG4J2-1203" dev="mikes" type="add" >>>>>>> due-to="Robert >>>>>>>>> Turner"> >>>>>>>>> Allow filtering of line breaks in layout pattern. >>>>>>>>> </action> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Matt Sicker <boa...@gmail.com> >>>>>> >>>> >>>> >>>> >>> >>> >>> > > >