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 69cf08345e72872487061acd7d00f6c569a71dc9 Author: Gary Gregory <[email protected]> AuthorDate: Sat Feb 5 08:30:33 2022 -0500 Refactor common DOM parsing code. Conflicts: log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/AsyncAppenderBuilder.java log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/ConsoleAppenderBuilder.java log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/DailyRollingFileAppenderBuilder.java log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/FileAppenderBuilder.java 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 --- .../org/apache/log4j/builders/AbstractBuilder.java | 45 ++++++++-- .../builders/appender/AsyncAppenderBuilder.java | 81 ++++++++---------- .../builders/appender/ConsoleAppenderBuilder.java | 57 +++++-------- .../appender/DailyRollingFileAppenderBuilder.java | 95 +++++++-------------- .../builders/appender/FileAppenderBuilder.java | 77 +++++------------ .../builders/appender/NullAppenderBuilder.java | 4 +- .../builders/appender/RewriteAppenderBuilder.java | 48 +++++------ .../appender/RollingFileAppenderBuilder.java | 97 ++++++---------------- 8 files changed, 193 insertions(+), 311 deletions(-) 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 50b3ec1..04b439c 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 @@ -24,6 +24,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import org.apache.log4j.bridge.FilterAdapter; import org.apache.log4j.bridge.FilterWrapper; @@ -74,10 +77,8 @@ public abstract class AbstractBuilder implements Builder { protected org.apache.logging.log4j.core.Filter buildFilters(final String level, final Filter filter) { if (level != null && filter != null) { final List<org.apache.logging.log4j.core.Filter> filterList = new ArrayList<>(); - final org.apache.logging.log4j.core.Filter thresholdFilter = - ThresholdFilter.createFilter(OptionConverter.convertLevel(level, Level.TRACE), - org.apache.logging.log4j.core.Filter.Result.NEUTRAL, - org.apache.logging.log4j.core.Filter.Result.DENY); + final org.apache.logging.log4j.core.Filter thresholdFilter = ThresholdFilter.createFilter(OptionConverter.convertLevel(level, Level.TRACE), + org.apache.logging.log4j.core.Filter.Result.NEUTRAL, org.apache.logging.log4j.core.Filter.Result.DENY); filterList.add(thresholdFilter); Filter f = filter; while (f != null) { @@ -90,9 +91,8 @@ public abstract class AbstractBuilder implements Builder { } return CompositeFilter.createFilters(filterList.toArray(org.apache.logging.log4j.core.Filter.EMPTY_ARRAY)); } else if (level != null) { - return ThresholdFilter.createFilter(OptionConverter.convertLevel(level, Level.TRACE), - org.apache.logging.log4j.core.Filter.Result.NEUTRAL, - org.apache.logging.log4j.core.Filter.Result.DENY); + return ThresholdFilter.createFilter(OptionConverter.convertLevel(level, Level.TRACE), org.apache.logging.log4j.core.Filter.Result.NEUTRAL, + org.apache.logging.log4j.core.Filter.Result.DENY); } else if (filter != null) { if (filter instanceof FilterWrapper) { return ((FilterWrapper) filter).getFilter(); @@ -185,4 +185,35 @@ public abstract class AbstractBuilder implements Builder { chars[0] = Character.toLowerCase(chars[0]); return new String(chars); } + + protected void setBoolean(final String name, final Element element, Holder<Boolean> ref) { + final String value = getValueAttribute(element); + if (value == null) { + LOGGER.warn("No value for {} parameter, using default {}", name, ref); + } else { + ref.set(Boolean.parseBoolean(value)); + } + } + + protected void setInteger(final String name, final Element element, Holder<Integer> ref) { + final String value = getValueAttribute(element); + if (value == null) { + LOGGER.warn("No value for {} parameter, using default {}", name, ref); + } else { + try { + ref.set(Integer.parseInt(value)); + } catch (NumberFormatException e) { + LOGGER.warn("{} parsing {} parameter, using default {}: {}", e.getClass().getName(), name, ref, e.getMessage(), e); + } + } + } + + protected void setString(final String name, final Element element, Holder<String> ref) { + final String value = getValueAttribute(element); + if (value == null) { + LOGGER.warn("No value for {} parameter, using default {}", name, ref); + } else { + ref.set(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 8657156..4b8b17e 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 @@ -16,6 +16,19 @@ */ package org.apache.log4j.builders.appender; +import static org.apache.log4j.builders.BuilderManager.CATEGORY; +import static org.apache.log4j.config.Log4j1Configuration.APPENDER_REF_TAG; +import static org.apache.log4j.config.Log4j1Configuration.THRESHOLD_PARAM; +import static org.apache.log4j.xml.XmlConfiguration.PARAM_TAG; +import static org.apache.log4j.xml.XmlConfiguration.forEachElement; + +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; + import org.apache.log4j.Appender; import org.apache.log4j.bridge.AppenderWrapper; import org.apache.log4j.builders.AbstractBuilder; @@ -58,7 +71,7 @@ public class AsyncAppenderBuilder extends AbstractBuilder implements AppenderBui public AsyncAppenderBuilder() { } - public AsyncAppenderBuilder(String prefix, Properties props) { + public AsyncAppenderBuilder(final String prefix, final Properties props) { super(prefix, props); } @@ -73,49 +86,25 @@ public class AsyncAppenderBuilder extends AbstractBuilder implements AppenderBui forEachElement(appenderElement.getChildNodes(), (currentElement) -> { switch (currentElement.getTagName()) { case APPENDER_REF_TAG: - Appender appender = config.findAppenderByReference(currentElement); + final Appender appender = config.findAppenderByReference(currentElement); if (appender != null) { appenderRefs.get().add(appender.getName()); } break; case PARAM_TAG: { switch (getNameAttributeKey(currentElement)) { - case BUFFER_SIZE_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for BufferSize parameter. Defaulting to 1024."); - } else { - bufferSize.set(Integer.parseInt(value)); - } + case BUFFER_SIZE_PARAM: + setInteger(BUFFER_SIZE_PARAM, currentElement, bufferSize); break; - } - case BLOCKING_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Blocking parameter. Defaulting to false."); - } else { - blocking.set(Boolean.parseBoolean(value)); - } + case BLOCKING_PARAM: + setBoolean(BLOCKING_PARAM, currentElement, blocking); break; - } - case INCLUDE_LOCATION_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for IncludeLocation parameter. Defaulting to false."); - } else { - includeLocation.set(Boolean.parseBoolean(value)); - } + case INCLUDE_LOCATION_PARAM: + setBoolean(INCLUDE_LOCATION_PARAM, currentElement, includeLocation); break; - } - case THRESHOLD_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Threshold parameter, ignoring."); - } else { - level.set(value); - } + case THRESHOLD_PARAM: + setString(THRESHOLD_PARAM, currentElement, level); break; - } } break; } @@ -128,16 +117,16 @@ public class AsyncAppenderBuilder extends AbstractBuilder implements AppenderBui @Override public Appender parseAppender(final String name, final String appenderPrefix, final String layoutPrefix, final String filterPrefix, final Properties props, final PropertiesConfiguration configuration) { - String appenderRef = getProperty(APPENDER_REF_TAG); - boolean blocking = getBooleanProperty(BLOCKING_PARAM); - boolean includeLocation = getBooleanProperty(INCLUDE_LOCATION_PARAM); - String level = getProperty(THRESHOLD_PARAM); - int bufferSize = getIntegerProperty(BUFFER_SIZE_PARAM, 1024); + final String appenderRef = getProperty(APPENDER_REF_TAG); + final boolean blocking = getBooleanProperty(BLOCKING_PARAM); + final boolean includeLocation = getBooleanProperty(INCLUDE_LOCATION_PARAM); + final String level = getProperty(THRESHOLD_PARAM); + final int bufferSize = getIntegerProperty(BUFFER_SIZE_PARAM, 1024); if (appenderRef == null) { LOGGER.warn("No appender references configured for AsyncAppender {}", name); return null; } - Appender appender = configuration.parseAppender(props, appenderRef); + final Appender appender = configuration.parseAppender(props, appenderRef); if (appender == null) { LOGGER.warn("Cannot locate Appender {}", appenderRef); return null; @@ -146,14 +135,14 @@ public class AsyncAppenderBuilder extends AbstractBuilder implements AppenderBui configuration); } - private <T extends Log4j1Configuration> Appender createAppender(String name, String level, - String[] appenderRefs, boolean blocking, int bufferSize, boolean includeLocation, - T configuration) { - org.apache.logging.log4j.Level logLevel = OptionConverter.convertLevel(level, + private <T extends Log4j1Configuration> Appender createAppender(final String name, final String level, + final String[] appenderRefs, final boolean blocking, final int bufferSize, final boolean includeLocation, + final T configuration) { + final org.apache.logging.log4j.Level logLevel = OptionConverter.convertLevel(level, org.apache.logging.log4j.Level.TRACE); - AppenderRef[] refs = new AppenderRef[appenderRefs.length]; + final AppenderRef[] refs = new AppenderRef[appenderRefs.length]; int index = 0; - for (String appenderRef : appenderRefs) { + for (final String appenderRef : appenderRefs) { refs[index++] = AppenderRef.createAppenderRef(appenderRef, logLevel, null); } return new AppenderWrapper(AsyncAppender.newBuilder() 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 78c1420..aa8056e 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 @@ -85,8 +85,8 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB break; case PARAM_TAG: { switch (getNameAttributeKey(currentElement)) { - case TARGET_PARAM: { - String value = getValueAttribute(currentElement); + case TARGET_PARAM: + final String value = getValueAttribute(currentElement); if (value == null) { LOGGER.warn("No value supplied for target parameter. Defaulting to " + SYSTEM_OUT); } else { @@ -102,34 +102,15 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB } } break; - } - case THRESHOLD_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Threshold parameter, ignoring."); - } else { - level.set(value); - } + case THRESHOLD_PARAM: + setString(THRESHOLD_PARAM, currentElement, level); break; - } - case FOLLOW_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Follow parameter. Using default of {}", follow); - } else { - follow.set(Boolean.parseBoolean(value)); - } + case FOLLOW_PARAM: + setBoolean(FOLLOW_PARAM, currentElement, follow); break; - } - case IMMEDIATE_FLUSH_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for ImmediateFlush parameter. Using default of {}", immediateFlush); - } else { - immediateFlush.set(Boolean.parseBoolean(value)); - } + case IMMEDIATE_FLUSH_PARAM: + setBoolean(IMMEDIATE_FLUSH_PARAM, currentElement, immediateFlush); break; - } } break; } @@ -137,7 +118,7 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB }); Filter head = null; Filter current = null; - for (Filter f : filters.get()) { + for (final Filter f : filters.get()) { if (head == null) { head = f; current = f; @@ -152,17 +133,17 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB @Override public Appender parseAppender(final String name, final String appenderPrefix, final String layoutPrefix, final String filterPrefix, final Properties props, final PropertiesConfiguration configuration) { - Layout layout = configuration.parseLayout(layoutPrefix, name, props); - Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); - String level = getProperty(THRESHOLD_PARAM); - String target = getProperty(TARGET_PARAM); - boolean follow = getBooleanProperty(FOLLOW_PARAM); - boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM); + final Layout layout = configuration.parseLayout(layoutPrefix, name, props); + final Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); + final String level = getProperty(THRESHOLD_PARAM); + final String target = getProperty(TARGET_PARAM); + final boolean follow = getBooleanProperty(FOLLOW_PARAM); + final boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM); return createAppender(name, layout, filter, level, target, immediateFlush, follow, configuration); } - private <T extends Log4j1Configuration> Appender createAppender(String name, Layout layout, Filter filter, - String level, String target, boolean immediateFlush, boolean follow, T configuration) { + 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; if (layout instanceof LayoutWrapper) { @@ -170,8 +151,8 @@ public class ConsoleAppenderBuilder extends AbstractBuilder implements AppenderB } else if (layout != null) { consoleLayout = new LayoutAdapter(layout); } - org.apache.logging.log4j.core.Filter consoleFilter = buildFilters(level, filter); - ConsoleAppender.Target consoleTarget = SYSTEM_ERR.equals(target) + 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() .setName(name) 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 8ee058b..2ccc38c 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 @@ -60,7 +60,7 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements public DailyRollingFileAppenderBuilder() { } - public DailyRollingFileAppenderBuilder(String prefix, Properties props) { + public DailyRollingFileAppenderBuilder(final String prefix, final Properties props) { super(prefix, props); } @@ -84,68 +84,31 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements case FILTER_TAG: filter.set(config.parseFilters(currentElement)); break; - case PARAM_TAG: { + case PARAM_TAG: switch (getNameAttributeKey(currentElement)) { case FILE_PARAM: - fileName.set(getValueAttribute(currentElement)); + setString(FILE_PARAM, currentElement, fileName); break; - case APPEND_PARAM: { - String bool = getValueAttribute(currentElement); - if (bool != null) { - append.set(Boolean.parseBoolean(bool)); - } else { - LOGGER.warn("No value provided for append parameter"); - } + case APPEND_PARAM: + setBoolean(APPEND_PARAM, currentElement, append); break; - } - case BUFFERED_IO_PARAM: { - String bool = getValueAttribute(currentElement); - if (bool != null) { - bufferedIo.set(Boolean.parseBoolean(bool)); - } else { - LOGGER.warn("No value provided for bufferedIo parameter"); - } + case BUFFERED_IO_PARAM: + setBoolean(BUFFERED_IO_PARAM, currentElement, bufferedIo); break; - } - case BUFFER_SIZE_PARAM: { - String size = getValueAttribute(currentElement); - if (size != null) { - bufferSize.set(Integer.parseInt(size)); - } else { - LOGGER.warn("No value provide for bufferSize parameter"); - } + case BUFFER_SIZE_PARAM: + setInteger(BUFFER_SIZE_PARAM, currentElement, bufferSize); break; - } - case THRESHOLD_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Threshold parameter, ignoring."); - } else { - level.set(value); - } + case THRESHOLD_PARAM: + setString(THRESHOLD_PARAM, currentElement, level); break; - } - case DATE_PATTERN_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for DatePattern parameter, ignoring."); - } else { - datePattern.set(value); - } + case DATE_PATTERN_PARAM: + setString(DATE_PATTERN_PARAM, currentElement, datePattern); break; - } - case IMMEDIATE_FLUSH_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for ImmediateFlush parameter. Using default of {}", true); - } else { - immediateFlush.set(Boolean.getBoolean(value)); - } + case IMMEDIATE_FLUSH_PARAM: + setBoolean(IMMEDIATE_FLUSH_PARAM, currentElement, immediateFlush); break; - } } break; - } } }); return createAppender(name, layout.get(), filter.get(), fileName.get(), append.get(), immediateFlush.get(), @@ -156,15 +119,15 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements @Override public Appender parseAppender(final String name, final String appenderPrefix, final String layoutPrefix, final String filterPrefix, final Properties props, final PropertiesConfiguration configuration) { - Layout layout = configuration.parseLayout(layoutPrefix, name, props); - Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); - String fileName = getProperty(FILE_PARAM); - String level = getProperty(THRESHOLD_PARAM); - boolean append = getBooleanProperty(APPEND_PARAM, true); - boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM, true); - boolean bufferedIo = getBooleanProperty(BUFFERED_IO_PARAM, false); - int bufferSize = getIntegerProperty(BUFFER_SIZE_PARAM, 8192); - String datePattern = getProperty(DATE_PATTERN_PARAM, DEFAULT_DATE_PATTERN); + final Layout layout = configuration.parseLayout(layoutPrefix, name, props); + final Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); + final String fileName = getProperty(FILE_PARAM); + final String level = getProperty(THRESHOLD_PARAM); + final boolean append = getBooleanProperty(APPEND_PARAM, true); + final boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM, true); + final boolean bufferedIo = getBooleanProperty(BUFFERED_IO_PARAM, false); + final int bufferSize = getIntegerProperty(BUFFER_SIZE_PARAM, 8192); + final String datePattern = getProperty(DATE_PATTERN_PARAM, DEFAULT_DATE_PATTERN); return createAppender(name, layout, filter, fileName, append, immediateFlush, level, bufferedIo, bufferSize, datePattern, configuration, configuration.getComponent(Clock.KEY)); } @@ -183,15 +146,15 @@ public class DailyRollingFileAppenderBuilder extends AbstractBuilder implements } else if (layout != null) { fileLayout = new LayoutAdapter(layout); } - org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); + final org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); if (fileName == null) { LOGGER.warn("Unable to create File Appender, no file name provided"); return null; } - String filePattern = fileName + "%d{" + datePattern + "}"; - TriggeringPolicy timePolicy = TimeBasedTriggeringPolicy.newBuilder().setClock(clock).setModulate(true).build(); - TriggeringPolicy policy = CompositeTriggeringPolicy.createPolicy(timePolicy); - RolloverStrategy strategy = DefaultRolloverStrategy.newBuilder() + final String filePattern = fileName + "%d{" + datePattern + "}"; + final TriggeringPolicy timePolicy = TimeBasedTriggeringPolicy.newBuilder().setClock(clock).setModulate(true).build(); + final TriggeringPolicy policy = CompositeTriggeringPolicy.createPolicy(timePolicy); + final RolloverStrategy strategy = DefaultRolloverStrategy.newBuilder() .setConfig(configuration) .setMax(Integer.toString(Integer.MAX_VALUE)) .build(); 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 2e3e9a4..96d2f90 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 @@ -56,7 +56,7 @@ public class FileAppenderBuilder extends AbstractBuilder implements AppenderBuil public FileAppenderBuilder() { } - public FileAppenderBuilder(String prefix, Properties props) { + public FileAppenderBuilder(final String prefix, final Properties props) { super(prefix, props); } @@ -79,59 +79,28 @@ public class FileAppenderBuilder extends AbstractBuilder implements AppenderBuil case FILTER_TAG: filter.set(config.parseFilters(currentElement)); break; - case PARAM_TAG: { + case PARAM_TAG: switch (getNameAttributeKey(currentElement)) { case FILE_PARAM: - fileName.set(getValueAttribute(currentElement)); + setString(FILE_PARAM, currentElement, fileName); break; - case APPEND_PARAM: { - String bool = getValueAttribute(currentElement); - if (bool != null) { - append.set(Boolean.parseBoolean(bool)); - } else { - LOGGER.warn("No value provided for append parameter"); - } + case APPEND_PARAM: + setBoolean(APPEND_PARAM, currentElement, append); break; - } - case BUFFERED_IO_PARAM: { - String bool = getValueAttribute(currentElement); - if (bool != null) { - bufferedIo.set(Boolean.parseBoolean(bool)); - } else { - LOGGER.warn("No value provided for bufferedIo parameter"); - } + case BUFFERED_IO_PARAM: + setBoolean(BUFFERED_IO_PARAM, currentElement, bufferedIo); break; - } - case BUFFER_SIZE_PARAM: { - String size = getValueAttribute(currentElement); - if (size != null) { - bufferSize.set(Integer.parseInt(size)); - } else { - LOGGER.warn("No value provide for bufferSize parameter"); - } + case BUFFER_SIZE_PARAM: + setInteger(BUFFER_SIZE_PARAM, currentElement, bufferSize); break; - } - case THRESHOLD_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Threshold parameter, ignoring."); - } else { - level.set(value); - } + case THRESHOLD_PARAM: + setString(THRESHOLD_PARAM, currentElement, level); break; - } - case IMMEDIATE_FLUSH_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for ImmediateFlush parameter. Using default of {}", true); - } else { - immediateFlush.set(Boolean.getBoolean(value)); - } + case IMMEDIATE_FLUSH_PARAM: + setBoolean(IMMEDIATE_FLUSH_PARAM, currentElement, immediateFlush); break; - } } break; - } } }); @@ -142,20 +111,20 @@ public class FileAppenderBuilder extends AbstractBuilder implements AppenderBuil @Override public Appender parseAppender(final String name, final String appenderPrefix, final String layoutPrefix, final String filterPrefix, final Properties props, final PropertiesConfiguration configuration) { - Layout layout = configuration.parseLayout(layoutPrefix, name, props); - Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); - String level = getProperty(THRESHOLD_PARAM); - String fileName = getProperty(FILE_PARAM); - boolean append = getBooleanProperty(APPEND_PARAM, true); - boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM, true); - boolean bufferedIo = getBooleanProperty(BUFFERED_IO_PARAM, false); - int bufferSize = Integer.parseInt(getProperty(BUFFER_SIZE_PARAM, "8192")); + final Layout layout = configuration.parseLayout(layoutPrefix, name, props); + final Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); + final String level = getProperty(THRESHOLD_PARAM); + final String fileName = getProperty(FILE_PARAM); + final boolean append = getBooleanProperty(APPEND_PARAM, true); + final boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM, true); + final boolean bufferedIo = getBooleanProperty(BUFFERED_IO_PARAM, false); + final int bufferSize = Integer.parseInt(getProperty(BUFFER_SIZE_PARAM, "8192")); return createAppender(name, configuration, layout, filter, fileName, level, immediateFlush, append, bufferedIo, bufferSize); } private Appender createAppender(final String name, final Log4j1Configuration configuration, final Layout layout, - final Filter filter, final String fileName, String level, boolean immediateFlush, final boolean append, + 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; if (bufferedIo) { @@ -166,7 +135,7 @@ public class FileAppenderBuilder extends AbstractBuilder implements AppenderBuil } else if (layout != null) { fileLayout = new LayoutAdapter(layout); } - org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); + final org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); if (fileName == null) { LOGGER.warn("Unable to create File Appender, no file name provided"); return null; 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 07f2fd5..98af6a8 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 @@ -39,8 +39,8 @@ public class NullAppenderBuilder implements AppenderBuilder { private static final Logger LOGGER = StatusLogger.getLogger(); @Override - public Appender parseAppender(Element appenderElement, XmlConfiguration config) { - String name = appenderElement.getAttribute("name"); + public Appender parseAppender(final Element appenderElement, final XmlConfiguration config) { + final String name = appenderElement.getAttribute("name"); return new AppenderWrapper(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 3cfff48..cac02ee 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 @@ -61,7 +61,7 @@ public class RewriteAppenderBuilder extends AbstractBuilder implements AppenderB public RewriteAppenderBuilder() { } - public RewriteAppenderBuilder(String prefix, Properties props) { + public RewriteAppenderBuilder(final String prefix, final Properties props) { super(prefix, props); } @@ -75,33 +75,25 @@ public class RewriteAppenderBuilder extends AbstractBuilder implements AppenderB forEachElement(appenderElement.getChildNodes(), (currentElement) -> { switch (currentElement.getTagName()) { case APPENDER_REF_TAG: - Appender appender = config.findAppenderByReference(currentElement); + final Appender appender = config.findAppenderByReference(currentElement); if (appender != null) { appenderRefs.get().add(appender.getName()); } break; - case REWRITE_POLICY_TAG: { - RewritePolicy policy = config.parseRewritePolicy(currentElement); + case REWRITE_POLICY_TAG: + final RewritePolicy policy = config.parseRewritePolicy(currentElement); if (policy != null) { rewritePolicyHolder.set(policy); } break; - } - case FILTER_TAG: { + case FILTER_TAG: filter.set(config.parseFilters(currentElement)); break; - } - case PARAM_TAG: { + case PARAM_TAG: if (getNameAttributeKey(currentElement).equalsIgnoreCase(THRESHOLD_PARAM)) { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Threshold parameter, ignoring."); - } else { - level.set(value); - } + setString(THRESHOLD_PARAM, currentElement, level); } break; - } } }); return createAppender(name, level.get(), appenderRefs.get().toArray(new String[0]), rewritePolicyHolder.get(), @@ -111,18 +103,18 @@ public class RewriteAppenderBuilder extends AbstractBuilder implements AppenderB @Override public Appender parseAppender(final String name, final String appenderPrefix, final String layoutPrefix, final String filterPrefix, final Properties props, final PropertiesConfiguration configuration) { - String appenderRef = getProperty(APPENDER_REF_TAG); - Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); - String policyPrefix = appenderPrefix + ".rewritePolicy"; - String className = getProperty(policyPrefix); - RewritePolicy policy = configuration.getBuilderManager().parseRewritePolicy(className, policyPrefix, + final String appenderRef = getProperty(APPENDER_REF_TAG); + final Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); + final String policyPrefix = appenderPrefix + ".rewritePolicy"; + final String className = getProperty(policyPrefix); + final RewritePolicy policy = configuration.getBuilderManager().parseRewritePolicy(className, policyPrefix, props, configuration); - String level = getProperty(THRESHOLD_PARAM); + final String level = getProperty(THRESHOLD_PARAM); if (appenderRef == null) { LOGGER.warn("No appender references configured for AsyncAppender {}", name); return null; } - Appender appender = configuration.parseAppender(props, appenderRef); + final Appender appender = configuration.parseAppender(props, appenderRef); if (appender == null) { LOGGER.warn("Cannot locate Appender {}", appenderRef); return null; @@ -130,16 +122,16 @@ public class RewriteAppenderBuilder extends AbstractBuilder implements AppenderB return createAppender(name, level, new String[] {appenderRef}, policy, filter, configuration); } - private <T extends Log4j1Configuration> Appender createAppender(String name, String level, - String[] appenderRefs, RewritePolicy policy, Filter filter, T configuration) { - org.apache.logging.log4j.Level logLevel = OptionConverter.convertLevel(level, + private <T extends Log4j1Configuration> Appender createAppender(final String name, final String level, + final String[] appenderRefs, final RewritePolicy policy, final Filter filter, final T configuration) { + final org.apache.logging.log4j.Level logLevel = OptionConverter.convertLevel(level, org.apache.logging.log4j.Level.TRACE); - AppenderRef[] refs = new AppenderRef[appenderRefs.length]; + final AppenderRef[] refs = new AppenderRef[appenderRefs.length]; int index = 0; - for (String appenderRef : appenderRefs) { + for (final String appenderRef : appenderRefs) { refs[index++] = AppenderRef.createAppenderRef(appenderRef, logLevel, null); } - org.apache.logging.log4j.core.Filter rewriteFilter = buildFilters(level, filter); + final org.apache.logging.log4j.core.Filter rewriteFilter = buildFilters(level, filter); org.apache.logging.log4j.core.appender.rewrite.RewritePolicy rewritePolicy; if (policy instanceof RewritePolicyWrapper) { rewritePolicy = ((RewritePolicyWrapper) policy).getPolicy(); 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 8923794..3a74245 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 @@ -86,77 +86,34 @@ public class RollingFileAppenderBuilder extends AbstractBuilder implements Appen case FILTER_TAG: filter.set(config.parseFilters(currentElement)); break; - case PARAM_TAG: { + case PARAM_TAG: switch (getNameAttributeKey(currentElement)) { case FILE_PARAM: - fileName.set(getValueAttribute(currentElement)); + setString(FILE_PARAM, currentElement, fileName); break; - case APPEND_PARAM: { - String bool = getValueAttribute(currentElement); - if (bool != null) { - append.set(Boolean.parseBoolean(bool)); - } else { - LOGGER.warn("No value provided for append parameter"); - } + case APPEND_PARAM: + setBoolean(APPEND_PARAM, currentElement, append); break; - } - case BUFFERED_IO_PARAM: { - String bool = getValueAttribute(currentElement); - if (bool != null) { - bufferedIo.set(Boolean.parseBoolean(bool)); - } else { - LOGGER.warn("No value provided for bufferedIo parameter"); - } + case BUFFERED_IO_PARAM: + setBoolean(BUFFERED_IO_PARAM, currentElement, bufferedIo); break; - } - case BUFFER_SIZE_PARAM: { - String size = getValueAttribute(currentElement); - if (size != null) { - bufferSize.set(Integer.parseInt(size)); - } else { - LOGGER.warn("No value provide for bufferSize parameter"); - } + case BUFFER_SIZE_PARAM: + setInteger(BUFFER_SIZE_PARAM, currentElement, bufferSize); break; - } - case MAX_BACKUP_INDEX: { - String size = getValueAttribute(currentElement); - if (size != null) { - maxBackups.set(size); - } else { - LOGGER.warn("No value provide for maxBackupIndex parameter"); - } + case MAX_BACKUP_INDEX: + setString(MAX_BACKUP_INDEX, currentElement, maxBackups); break; - } - case MAX_SIZE_PARAM: { - String size = getValueAttribute(currentElement); - if (size != null) { - maxSize.set(size); - } else { - LOGGER.warn("No value provide for bufferSize parameter"); - } + case MAX_SIZE_PARAM: + setString(MAX_SIZE_PARAM, currentElement, maxSize); break; - } - case THRESHOLD_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for Threshold parameter, ignoring."); - } else { - level.set(value); - } + case THRESHOLD_PARAM: + setString(THRESHOLD_PARAM, currentElement, level); break; - } - case IMMEDIATE_FLUSH_PARAM: { - String value = getValueAttribute(currentElement); - if (value == null) { - LOGGER.warn("No value supplied for ImmediateFlush parameter. Using default of {}", true); - } else { - immediateFlush.set(Boolean.getBoolean(value)); - } + case IMMEDIATE_FLUSH_PARAM: + setBoolean(IMMEDIATE_FLUSH_PARAM, currentElement, immediateFlush); break; - } } break; - } } }); return createAppender(name, config, layout.get(), filter.get(), append.get(), bufferedIo.get(), @@ -167,16 +124,16 @@ public class RollingFileAppenderBuilder extends AbstractBuilder implements Appen @Override public Appender parseAppender(final String name, final String appenderPrefix, final String layoutPrefix, final String filterPrefix, final Properties props, final PropertiesConfiguration configuration) { - Layout layout = configuration.parseLayout(layoutPrefix, name, props); - Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); - String fileName = getProperty(FILE_PARAM); - String level = getProperty(THRESHOLD_PARAM); - boolean append = getBooleanProperty(APPEND_PARAM, true); - boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM, true); - boolean bufferedIo = getBooleanProperty(BUFFERED_IO_PARAM); - int bufferSize = getIntegerProperty(BUFFER_SIZE_PARAM, 8192); - String maxSize = getProperty(MAX_SIZE_PARAM, DEFAULT_MAX_SIZE); - String maxBackups = getProperty(MAX_BACKUP_INDEX, DEFAULT_MAX_BACKUPS); + final Layout layout = configuration.parseLayout(layoutPrefix, name, props); + final Filter filter = configuration.parseAppenderFilters(props, filterPrefix, name); + final String fileName = getProperty(FILE_PARAM); + final String level = getProperty(THRESHOLD_PARAM); + final boolean append = getBooleanProperty(APPEND_PARAM, true); + final boolean immediateFlush = getBooleanProperty(IMMEDIATE_FLUSH_PARAM, true); + final boolean bufferedIo = getBooleanProperty(BUFFERED_IO_PARAM, false); + final int bufferSize = getIntegerProperty(BUFFER_SIZE_PARAM, 8192); + final String maxSize = getProperty(MAX_SIZE_PARAM, DEFAULT_MAX_SIZE); + final String maxBackups = getProperty(MAX_BACKUP_INDEX, DEFAULT_MAX_BACKUPS); return createAppender(name, configuration, layout, filter, append, bufferedIo, bufferSize, immediateFlush, fileName, level, maxSize, maxBackups, configuration.getComponent(Clock.KEY)); } @@ -194,7 +151,7 @@ public class RollingFileAppenderBuilder extends AbstractBuilder implements Appen } else if (layout != null) { fileLayout = new LayoutAdapter(layout); } - org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); + final org.apache.logging.log4j.core.Filter fileFilter = buildFilters(level, filter); if (fileName == null) { LOGGER.warn("Unable to create File Appender, no file name provided"); return null;
