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


Reply via email to