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