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