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