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