This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 30f527e02b1dcedb85eb9881bffb9afcc64f6c19 Author: Piotr P. Karwasz <[email protected]> AuthorDate: Sat Mar 5 21:16:50 2022 +0100 [LOG4J2-3426] Refactors wrapping code Refactors the wrapping logic into single `wrap` or `adapt` methods to be sure we always perform the correct logic. Conflicts: log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java --- .../src/main/java/org/apache/log4j/Category.java | 2 +- .../org/apache/log4j/bridge/AppenderAdapter.java | 26 ++++++++++++++++++-- .../org/apache/log4j/bridge/AppenderWrapper.java | 28 +++++++++++++++++++++- .../org/apache/log4j/bridge/FilterAdapter.java | 25 ++++++++++++------- .../org/apache/log4j/bridge/FilterWrapper.java | 21 ++++++++++++++++ .../org/apache/log4j/bridge/LayoutAdapter.java | 24 ++++++++++++++++++- .../org/apache/log4j/bridge/LayoutWrapper.java | 18 ++++++++++++++ .../org/apache/log4j/builders/AbstractBuilder.java | 2 +- .../builders/appender/AsyncAppenderBuilder.java | 4 ++-- .../builders/appender/ConsoleAppenderBuilder.java | 9 ++----- .../appender/DailyRollingFileAppenderBuilder.java | 9 ++----- .../builders/appender/FileAppenderBuilder.java | 9 ++----- .../builders/appender/NullAppenderBuilder.java | 4 ++-- .../builders/appender/RewriteAppenderBuilder.java | 2 +- .../appender/RollingFileAppenderBuilder.java | 9 ++----- .../builders/appender/SocketAppenderBuilder.java | 9 ++----- .../builders/appender/SyslogAppenderBuilder.java | 10 +++----- .../builders/filter/LevelMatchFilterBuilder.java | 2 +- .../builders/filter/LevelRangeFilterBuilder.java | 2 +- .../builders/filter/StringMatchFilterBuilder.java | 2 +- .../log4j/builders/layout/HtmlLayoutBuilder.java | 2 +- .../builders/layout/PatternLayoutBuilder.java | 2 +- .../log4j/builders/layout/TTCCLayoutBuilder.java | 2 +- .../log4j/builders/layout/XmlLayoutBuilder.java | 2 +- .../log4j/config/PropertiesConfiguration.java | 12 ++-------- .../org/apache/log4j/xml/XmlConfiguration.java | 6 +---- .../log4j/builders/Log4j2ListAppenderBuilder.java | 9 ++----- 27 files changed, 161 insertions(+), 91 deletions(-) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/Category.java b/log4j-1.2-api/src/main/java/org/apache/log4j/Category.java index 82a6e1b..cce2c86 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/Category.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/Category.java @@ -376,7 +376,7 @@ public class Category implements AppenderAttachable { if (appender == null && LogManager.isLog4jCorePresent()) { final org.apache.logging.log4j.core.Appender coreAppender = CategoryUtil.getAppenders(logger).get(name); if (coreAppender != null) { - addAppender(appender = new AppenderWrapper(coreAppender)); + addAppender(appender = AppenderWrapper.adapt(coreAppender)); } } return appender; diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderAdapter.java b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderAdapter.java index 1d36c45..f57e29d 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderAdapter.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderAdapter.java @@ -34,12 +34,34 @@ public class AppenderAdapter { private final Adapter adapter; /** + * Adapts a Log4j 1.x appender into a Log4j 2.x appender. Applying this method + * on the result of + * {@link AppenderWrapper#adapt(org.apache.logging.log4j.core.Appender)} should + * return the original Log4j 2.x appender. + * + * @param appender a Log4j 1.x appender + * @return a Log4j 2.x appender or {@code null} if the parameter is {@code null} + */ + public static org.apache.logging.log4j.core.Appender adapt(Appender appender) { + if (appender instanceof org.apache.logging.log4j.core.Appender) { + return (org.apache.logging.log4j.core.Appender) appender; + } + if (appender instanceof AppenderWrapper) { + return ((AppenderWrapper) appender).getAppender(); + } + if (appender != null) { + return new AppenderAdapter(appender).getAdapter(); + } + return null; + } + + /** * Constructor. * @param appender The Appender to wrap. */ - public AppenderAdapter(Appender appender) { + private AppenderAdapter(Appender appender) { this.appender = appender; - final org.apache.logging.log4j.core.Filter appenderFilter = FilterAdapter.convertFilter(appender.getFilter()); + final org.apache.logging.log4j.core.Filter appenderFilter = FilterAdapter.adapt(appender.getFilter()); this.adapter = new Adapter(appender.getName(), appenderFilter, null, true, null); } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderWrapper.java b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderWrapper.java index 3d28fd7..d4b1869 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderWrapper.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/AppenderWrapper.java @@ -18,6 +18,7 @@ package org.apache.log4j.bridge; import org.apache.log4j.Appender; import org.apache.log4j.Layout; +import org.apache.log4j.bridge.AppenderAdapter.Adapter; import org.apache.log4j.spi.ErrorHandler; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; @@ -35,6 +36,31 @@ public class AppenderWrapper implements Appender { private final org.apache.logging.log4j.core.Appender appender; /** + * Adapts a Log4j 2.x appender into a Log4j 1.x appender. Applying this method + * on the result of {@link AppenderAdapter#adapt(Appender)} should return the + * original Log4j 1.x appender. + * + * @param appender a Log4j 2.x appender + * @return a Log4j 1.x appender or {@code null} if the parameter is {@code null} + */ + public static Appender adapt(org.apache.logging.log4j.core.Appender appender) { + if (appender instanceof Appender) { + return (Appender) appender; + } + if (appender instanceof Adapter) { + Adapter adapter = (Adapter) appender; + // Don't unwrap an appender with filters + if (!adapter.hasFilter()) { + return adapter.getAppender(); + } + } + if (appender != null) { + return new AppenderWrapper(appender); + } + return null; + } + + /** * Constructs a new instance for a Core Appender. * * @param appender a Core Appender. @@ -55,7 +81,7 @@ public class AppenderWrapper implements Appender { @Override public void addFilter(Filter newFilter) { if (appender instanceof AbstractFilterable) { - ((AbstractFilterable) appender).addFilter(FilterAdapter.convertFilter(newFilter)); + ((AbstractFilterable) appender).addFilter(FilterAdapter.adapt(newFilter)); } else { LOGGER.warn("Unable to add filter to appender {}, it does not support filters", appender.getName()); } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterAdapter.java b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterAdapter.java index e10478c..7110433 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterAdapter.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterAdapter.java @@ -30,16 +30,23 @@ public class FilterAdapter extends AbstractFilter { private final Filter filter; /** - * Converts a Log4j 1.x filter into a Log4j 2.x filter. + * Adapts a Log4j 1.x filter into a Log4j 2.x filter. Applying this method to + * the result of + * {@link FilterWrapper#adapt(org.apache.logging.log4j.core.Filter)} should + * return the original Log4j 2.x filter. * - * @param filter - * a Log4j 1.x filter - * @return a Log4j 2.x filter + * @param filter a Log4j 1.x filter + * @return a Log4j 2.x filter or {@code null} if the parameter is {@code null} */ - public static org.apache.logging.log4j.core.Filter convertFilter(Filter filter) { + public static org.apache.logging.log4j.core.Filter adapt(Filter filter) { + if (filter instanceof org.apache.logging.log4j.core.Filter) { + return (org.apache.logging.log4j.core.Filter) filter; + } + // Don't unwrap the head of a filter chain if (filter instanceof FilterWrapper && filter.getNext() == null) { return ((FilterWrapper) filter).getFilter(); - } else if (filter != null) { + } + if (filter != null) { return new FilterAdapter(filter); } return null; @@ -62,12 +69,12 @@ public class FilterAdapter extends AbstractFilter { if (first instanceof FilterWrapper && ((FilterWrapper) first).getFilter() instanceof CompositeFilter) { composite = (CompositeFilter) ((FilterWrapper) first).getFilter(); } else { - composite = CompositeFilter.createFilters(new org.apache.logging.log4j.core.Filter[] {convertFilter(first)}); + composite = CompositeFilter.createFilters(new org.apache.logging.log4j.core.Filter[] {adapt(first)}); } - return new FilterWrapper(composite.addFilter(convertFilter(second))); + return FilterWrapper.adapt(composite.addFilter(adapt(second))); } - public FilterAdapter(Filter filter) { + private FilterAdapter(Filter filter) { this.filter = filter; } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterWrapper.java b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterWrapper.java index b2855cd..9783be3 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterWrapper.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/FilterWrapper.java @@ -27,6 +27,27 @@ public class FilterWrapper extends Filter { private final org.apache.logging.log4j.core.Filter filter; + /** + * Adapts a Log4j 2.x filter into a Log4j 1.x filter. Applying this method to + * the result of {@link FilterAdapter#adapt(Filter)} should return the original + * Log4j 1.x filter. + * + * @param filter a Log4j 2.x filter + * @return a Log4j 1.x filter or {@code null} if the parameter is {@code null} + */ + public static Filter adapt(org.apache.logging.log4j.core.Filter filter) { + if (filter instanceof Filter) { + return (Filter) filter; + } + if (filter instanceof FilterAdapter) { + return ((FilterAdapter) filter).getFilter(); + } + if (filter != null) { + return new FilterWrapper(filter); + } + return null; + } + public FilterWrapper(org.apache.logging.log4j.core.Filter filter) { this.filter = filter; } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutAdapter.java b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutAdapter.java index 818e1fd..a98b0a8 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutAdapter.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutAdapter.java @@ -29,10 +29,32 @@ import org.apache.logging.log4j.core.layout.ByteBufferDestination; public class LayoutAdapter implements org.apache.logging.log4j.core.Layout<String> { private final Layout layout; - public LayoutAdapter(Layout layout) { + /** + * Adapts a Log4j 1.x layout into a Log4j 2.x layout. Applying this method to + * the result of + * {@link LayoutWrapper#adapt(org.apache.logging.log4j.core.Layout)} should + * return the original Log4j 2.x layout. + * + * @param layout a Log4j 1.x layout + * @return a Log4j 2.x layout or {@code null} if the parameter is {@code null} + */ + public static org.apache.logging.log4j.core.Layout<?> adapt(Layout layout) { + if (layout instanceof LayoutWrapper) { + return ((LayoutWrapper) layout).getLayout(); + } + if (layout != null) { + return new LayoutAdapter(layout); + } + return null; + } + + private LayoutAdapter(Layout layout) { this.layout = layout; } + public Layout getLayout() { + return layout; + } @Override public byte[] getFooter() { diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutWrapper.java b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutWrapper.java index b7ac317..76d6d5d 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutWrapper.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/bridge/LayoutWrapper.java @@ -27,6 +27,24 @@ public class LayoutWrapper extends Layout { private final org.apache.logging.log4j.core.Layout<?> layout; /** + * Adapts a Log4j 2.x layout into a Log4j 1.x layout. Applying this method to + * the result of {@link LayoutAdapter#adapt(Layout)} should return the original + * Log4j 1.x layout. + * + * @param layout a Log4j 2.x layout + * @return a Log4j 1.x layout or {@code null} if the parameter is {@code null} + */ + public static Layout adapt(org.apache.logging.log4j.core.Layout<?> layout) { + if (layout instanceof LayoutAdapter) { + return ((LayoutAdapter) layout).getLayout(); + } + if (layout != null) { + return new LayoutWrapper(layout); + } + return null; + } + + /** * Constructs a new instance. * * @param layout The layout to wrap. diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java index 56a143f..0969ef0 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java @@ -83,7 +83,7 @@ public abstract class AbstractBuilder<T> implements Builder<T> { if (filter != null) { head = FilterAdapter.addFilter(head, filter); } - return FilterAdapter.convertFilter(head); + return FilterAdapter.adapt(head); } private String capitalize(final String value) { diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java index 5aece66..b3856b7 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java @@ -145,8 +145,8 @@ public class AsyncAppenderBuilder extends AbstractBuilder implements AppenderBui refs[index++] = AppenderRef.createAppenderRef(appenderRef, logLevel, null); } Builder builder = AsyncAppender.newBuilder(); - builder.setFilter(FilterAdapter.convertFilter(filter)); - return new AppenderWrapper(builder.setName(name) + builder.setFilter(FilterAdapter.adapt(filter)); + return AppenderWrapper.adapt(builder.setName(name) .setAppenderRefs(refs) .setBlocking(blocking) .setBufferSize(bufferSize) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java index 95db77a..b82057b 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java @@ -130,17 +130,12 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB private <T extends Log4j1Configuration> Appender createAppender(final String name, final Layout layout, final Filter filter, final String level, final String target, final boolean immediateFlush, final boolean follow, final T configuration) { - org.apache.logging.log4j.core.Layout<?> consoleLayout = null; + org.apache.logging.log4j.core.Layout<?> consoleLayout = LayoutAdapter.adapt(layout); - if (layout instanceof LayoutWrapper) { - consoleLayout = ((LayoutWrapper) layout).getLayout(); - } else if (layout != null) { - consoleLayout = new LayoutAdapter(layout); - } final org.apache.logging.log4j.core.Filter consoleFilter = buildFilters(level, filter); final ConsoleAppender.Target consoleTarget = SYSTEM_ERR.equals(target) ? ConsoleAppender.Target.SYSTEM_ERR : ConsoleAppender.Target.SYSTEM_OUT; - return new AppenderWrapper(ConsoleAppender.newBuilder() + return AppenderWrapper.adapt(ConsoleAppender.newBuilder() .setName(name) .setTarget(consoleTarget) .setFollow(follow) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java index c0704a1..10666f3 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java @@ -141,15 +141,10 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements final String level, final boolean bufferedIo, final int bufferSize, final String datePattern, final T configuration, final Clock clock) { - org.apache.logging.log4j.core.Layout<?> fileLayout = null; + org.apache.logging.log4j.core.Layout<?> fileLayout = LayoutAdapter.adapt(layout); if (bufferedIo) { immediateFlush = false; } - if (layout instanceof LayoutWrapper) { - fileLayout = ((LayoutWrapper) layout).getLayout(); - } else if (layout != null) { - fileLayout = new LayoutAdapter(layout); - } final org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); if (fileName == null) { LOGGER.error("Unable to create DailyRollingFileAppender, no file name provided"); @@ -162,7 +157,7 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements .setConfig(configuration) .setMax(Integer.toString(Integer.MAX_VALUE)) .build(); - return new AppenderWrapper(RollingFileAppender.newBuilder() + return AppenderWrapper.adapt(RollingFileAppender.newBuilder() .setName(name) .setConfiguration(configuration) .setLayout(fileLayout) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java index 65bd489..9eada23 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java @@ -125,21 +125,16 @@ public class FileAppenderBuilder extends AbstractBuilder implements AppenderBuil private Appender createAppender(final String name, final Log4j1Configuration configuration, final Layout layout, final Filter filter, final String fileName, final String level, boolean immediateFlush, final boolean append, final boolean bufferedIo, final int bufferSize) { - org.apache.logging.log4j.core.Layout<?> fileLayout = null; + org.apache.logging.log4j.core.Layout<?> fileLayout = LayoutAdapter.adapt(layout); if (bufferedIo) { immediateFlush = false; } - if (layout instanceof LayoutWrapper) { - fileLayout = ((LayoutWrapper) layout).getLayout(); - } else if (layout != null) { - fileLayout = new LayoutAdapter(layout); - } final org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); if (fileName == null) { LOGGER.error("Unable to create FileAppender, no file name provided"); return null; } - return new AppenderWrapper(FileAppender.newBuilder() + return AppenderWrapper.adapt(FileAppender.newBuilder() .setName(name) .setConfiguration(configuration) .setLayout(fileLayout) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/NullAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/NullAppenderBuilder.java index 960a9fe..cfb7749 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/NullAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/NullAppenderBuilder.java @@ -37,13 +37,13 @@ public class NullAppenderBuilder implements AppenderBuilder { @Override public Appender parseAppender(final Element appenderElement, final XmlConfiguration config) { final String name = appenderElement.getAttribute("name"); - return new AppenderWrapper(NullAppender.createAppender(name)); + return AppenderWrapper.adapt(NullAppender.createAppender(name)); } @Override public Appender parseAppender(final String name, final String appenderPrefix, final String layoutPrefix, final String filterPrefix, final Properties props, final PropertiesConfiguration configuration) { - return new AppenderWrapper(NullAppender.createAppender(name)); + return AppenderWrapper.adapt(NullAppender.createAppender(name)); } } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java index 9e1b3b5..8143915 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RewriteAppenderBuilder.java @@ -141,7 +141,7 @@ public class RewriteAppenderBuilder extends AbstractBuilder implements AppenderB } else { rewritePolicy = new RewritePolicyAdapter(policy); } - return new AppenderWrapper(RewriteAppender.createAppender(name, true, refs, configuration, + return AppenderWrapper.adapt(RewriteAppender.createAppender(name, true, refs, configuration, rewritePolicy, rewriteFilter)); } } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java index 4cd8bb4..5390854 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/RollingFileAppenderBuilder.java @@ -146,15 +146,10 @@ public class RollingFileAppenderBuilder extends AbstractBuilder implements Appen final Filter filter, final boolean append, final boolean bufferedIo, final int bufferSize, boolean immediateFlush, final String fileName, final String level, final String maxSize, final String maxBackups, final Clock clock) { - org.apache.logging.log4j.core.Layout<?> fileLayout = null; + org.apache.logging.log4j.core.Layout<?> fileLayout = LayoutAdapter.adapt(layout); if (!bufferedIo) { immediateFlush = false; } - if (layout instanceof LayoutWrapper) { - fileLayout = ((LayoutWrapper) layout).getLayout(); - } else if (layout != null) { - fileLayout = new LayoutAdapter(layout); - } final org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); if (fileName == null) { LOGGER.error("Unable to create RollingFileAppender, no file name provided"); @@ -168,7 +163,7 @@ public class RollingFileAppenderBuilder extends AbstractBuilder implements Appen .setConfig(config) .setMax(maxBackups) .build(); - return new AppenderWrapper(RollingFileAppender.newBuilder() + return AppenderWrapper.adapt(RollingFileAppender.newBuilder() .setName(name) .setConfiguration(config) .setLayout(fileLayout) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SocketAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SocketAppenderBuilder.java index a5fa418..a35b369 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SocketAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SocketAppenderBuilder.java @@ -71,15 +71,10 @@ public class SocketAppenderBuilder extends AbstractBuilder implements AppenderBu private <T extends Log4j1Configuration> Appender createAppender(final String name, final String host, final int port, final Layout layout, final Filter filter, final String level, final boolean immediateFlush, final int reconnectDelayMillis, final T configuration) { - org.apache.logging.log4j.core.Layout<?> actualLayout = null; - if (layout instanceof LayoutWrapper) { - actualLayout = ((LayoutWrapper) layout).getLayout(); - } else if (layout != null) { - actualLayout = new LayoutAdapter(layout); - } + org.apache.logging.log4j.core.Layout<?> actualLayout = LayoutAdapter.adapt(layout); final org.apache.logging.log4j.core.Filter actualFilter = buildFilters(level, filter); // @formatter:off - return new AppenderWrapper(SocketAppender.newBuilder() + return AppenderWrapper.adapt(SocketAppender.newBuilder() .setHost(host) .setPort(port) .setReconnectDelayMillis(reconnectDelayMillis) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java index 3987fad..dd5be72 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/SyslogAppenderBuilder.java @@ -127,12 +127,8 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu final AtomicReference<String> host = new AtomicReference<>(); final AtomicInteger port = new AtomicInteger(); resolveSyslogHost(syslogHost, host, port); - org.apache.logging.log4j.core.Layout<? extends Serializable> appenderLayout; - if (layout instanceof LayoutWrapper) { - appenderLayout = ((LayoutWrapper) layout).getLayout(); - } else if (layout != null) { - appenderLayout = new LayoutAdapter(layout); - } else { + org.apache.logging.log4j.core.Layout<? extends Serializable> appenderLayout = LayoutAdapter.adapt(layout); + if (appenderLayout == null) { appenderLayout = SyslogLayout.newBuilder() .setFacility(Facility.toFacility(facility)) .setConfiguration(configuration) @@ -140,7 +136,7 @@ public class SyslogAppenderBuilder extends AbstractBuilder implements AppenderBu } final org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); - return new AppenderWrapper(SyslogAppender.newSyslogAppenderBuilder() + return AppenderWrapper.adapt(SyslogAppender.newSyslogAppenderBuilder() .setName(name) .setConfiguration(configuration) .setLayout(appenderLayout) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java index 2c45b10..60b838f 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelMatchFilterBuilder.java @@ -83,7 +83,7 @@ public class LevelMatchFilterBuilder extends AbstractBuilder<Filter> implements org.apache.logging.log4j.core.Filter.Result onMatch = acceptOnMatch ? org.apache.logging.log4j.core.Filter.Result.ACCEPT : org.apache.logging.log4j.core.Filter.Result.DENY; - return new FilterWrapper(LevelMatchFilter.newBuilder() + return FilterWrapper.adapt(LevelMatchFilter.newBuilder() .setLevel(lvl) .setOnMatch(onMatch) .setOnMismatch(org.apache.logging.log4j.core.Filter.Result.NEUTRAL) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java index 88f45cd..bcdd382 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/LevelRangeFilterBuilder.java @@ -94,7 +94,7 @@ public class LevelRangeFilterBuilder extends AbstractBuilder<Filter> implements ? org.apache.logging.log4j.core.Filter.Result.ACCEPT : org.apache.logging.log4j.core.Filter.Result.NEUTRAL; - return new FilterWrapper(LevelRangeFilter.createFilter(min, max, onMatch, + return FilterWrapper.adapt(LevelRangeFilter.createFilter(min, max, onMatch, org.apache.logging.log4j.core.Filter.Result.DENY)); } } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java index cce3344..57a9524 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/filter/StringMatchFilterBuilder.java @@ -87,7 +87,7 @@ public class StringMatchFilterBuilder extends AbstractBuilder<Filter> implements org.apache.logging.log4j.core.Filter.Result onMatch = acceptOnMatch ? org.apache.logging.log4j.core.Filter.Result.ACCEPT : org.apache.logging.log4j.core.Filter.Result.DENY; - return new FilterWrapper(StringMatchFilter.newBuilder() + return FilterWrapper.adapt(StringMatchFilter.newBuilder() .setMatchString(text) .setOnMatch(onMatch) .setOnMismatch(org.apache.logging.log4j.core.Filter.Result.NEUTRAL) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java index 75ca290..397f9e1 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/HtmlLayoutBuilder.java @@ -75,7 +75,7 @@ public class HtmlLayoutBuilder extends AbstractBuilder<Layout> implements Layout } private Layout createLayout(String title, boolean locationInfo) { - return new LayoutWrapper(HtmlLayout.newBuilder() + return LayoutWrapper.adapt(HtmlLayout.newBuilder() .setTitle(title) .setLocationInfo(locationInfo) .build()); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java index 2e341b8..1d1dd2c 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java @@ -84,7 +84,7 @@ public class PatternLayoutBuilder extends AbstractBuilder<Layout> implements Lay LOGGER.info("No pattern provided for pattern layout, using default pattern"); pattern = PatternLayout.DEFAULT_CONVERSION_PATTERN; } - return new LayoutWrapper(PatternLayout.newBuilder() + return LayoutWrapper.adapt(PatternLayout.newBuilder() .setPattern(pattern // Log4j 2's %x (NDC) is not compatible with Log4j 1's // %x diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java index fc14802..511c857 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/TTCCLayoutBuilder.java @@ -122,7 +122,7 @@ public class TTCCLayoutBuilder extends AbstractBuilder<Layout> implements Layout sb.append("%notEmpty{%ndc }"); } sb.append("- %m%n"); - return new LayoutWrapper(PatternLayout.newBuilder() + return LayoutWrapper.adapt(PatternLayout.newBuilder() .setPattern(sb.toString()) .setConfiguration(config) .build()); diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java index 1d6e4f9..221127d 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/XmlLayoutBuilder.java @@ -71,6 +71,6 @@ public class XmlLayoutBuilder extends AbstractBuilder<Layout> implements LayoutB } private Layout createLayout(boolean properties, boolean locationInfo) { - return new LayoutWrapper(Log4j1XmlLayout.createLayout(locationInfo, properties)); + return LayoutWrapper.adapt(Log4j1XmlLayout.createLayout(locationInfo, properties)); } } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java index f5774f1..5e9b576 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/PropertiesConfiguration.java @@ -457,11 +457,7 @@ public class PropertiesConfiguration extends Log4j1Configuration { appender = buildAppender(appenderName, className, prefix, layoutPrefix, filterPrefix, props); } else { registry.put(appenderName, appender); - if (appender instanceof AppenderWrapper) { - addAppender(((AppenderWrapper) appender).getAppender()); - } else { - addAppender(new AppenderAdapter(appender).getAdapter()); - } + addAppender(AppenderAdapter.adapt(appender)); } return appender; } @@ -485,11 +481,7 @@ public class PropertiesConfiguration extends Log4j1Configuration { appender.addFilter(parseAppenderFilters(props, filterPrefix, appenderName)); final String[] keys = new String[] {layoutPrefix}; addProperties(appender, keys, props, prefix); - if (appender instanceof AppenderWrapper) { - addAppender(((AppenderWrapper) appender).getAppender()); - } else { - addAppender(new AppenderAdapter(appender).getAdapter()); - } + addAppender(AppenderAdapter.adapt(appender)); registry.put(appenderName, appender); return appender; } diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java index 50c355b..4c817ec 100644 --- a/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/xml/XmlConfiguration.java @@ -782,11 +782,7 @@ public class XmlConfiguration extends Log4j1Configuration { case APPENDER_TAG: Appender appender = parseAppender(currentElement); appenderMap.put(appender.getName(), appender); - if (appender instanceof AppenderWrapper) { - addAppender(((AppenderWrapper) appender).getAppender()); - } else { - addAppender(new AppenderAdapter(appender).getAdapter()); - } + addAppender(AppenderAdapter.adapt(appender)); break; default: quietParseUnrecognizedElement(null, currentElement, props); diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/builders/Log4j2ListAppenderBuilder.java b/log4j-1.2-api/src/test/java/org/apache/log4j/builders/Log4j2ListAppenderBuilder.java index 37b247c..3295bbf 100644 --- a/log4j-1.2-api/src/test/java/org/apache/log4j/builders/Log4j2ListAppenderBuilder.java +++ b/log4j-1.2-api/src/test/java/org/apache/log4j/builders/Log4j2ListAppenderBuilder.java @@ -78,13 +78,8 @@ public class Log4j2ListAppenderBuilder extends AbstractBuilder implements Append } private Appender createAppender(String name, Layout layout, Filter filter) { - final org.apache.logging.log4j.core.Layout<?> log4j2Layout; - if (layout instanceof LayoutWrapper) { - log4j2Layout = ((LayoutWrapper) layout).getLayout(); - } else { - log4j2Layout = layout != null ? new LayoutAdapter(layout) : null; - } - return new AppenderWrapper( + final org.apache.logging.log4j.core.Layout<?> log4j2Layout = LayoutAdapter.adapt(layout); + return AppenderWrapper.adapt( ListAppender.newBuilder() .setName(name) .setLayout(log4j2Layout)
