in log4j-1.2-api/src/main/java/org/apache/log4j/builders/appender/EnhancedRollingFileAppenderBuilder.java [102:182]
public Appender parseAppender(final Element element, final XmlConfiguration configuration) {
// FileAppender
final String name = getNameAttribute(element);
final AtomicReference<Layout> layout = new AtomicReference<>();
final AtomicReference<Filter> filter = new AtomicReference<>();
final AtomicReference<String> fileName = new AtomicReference<>();
final AtomicReference<String> level = new AtomicReference<>();
final AtomicBoolean immediateFlush = new AtomicBoolean(true);
final AtomicBoolean append = new AtomicBoolean(true);
final AtomicBoolean bufferedIo = new AtomicBoolean();
final AtomicInteger bufferSize = new AtomicInteger(8192);
// specific to RollingFileAppender
final AtomicReference<String> rollingPolicyClassName = new AtomicReference<>();
final AtomicReference<String> activeFileName = new AtomicReference<>();
final AtomicReference<String> fileNamePattern = new AtomicReference<>();
final AtomicInteger minIndex = new AtomicInteger(DEFAULT_MIN_INDEX);
final AtomicInteger maxIndex = new AtomicInteger(DEFAULT_MAX_INDEX);
final AtomicReference<TriggeringPolicy> triggeringPolicy = new AtomicReference<>();
forEachElement(element.getChildNodes(), currentElement -> {
switch (currentElement.getTagName()) {
case ROLLING_TAG:
parseRollingPolicy(
currentElement,
configuration,
rollingPolicyClassName,
activeFileName,
fileNamePattern,
minIndex,
maxIndex);
break;
case TRIGGERING_TAG:
triggeringPolicy.set(configuration.parseTriggeringPolicy(currentElement));
break;
case LAYOUT_TAG:
layout.set(configuration.parseLayout(currentElement));
break;
case FILTER_TAG:
configuration.addFilter(filter, currentElement);
break;
case PARAM_TAG:
switch (getNameAttributeKey(currentElement)) {
case FILE_PARAM:
set(FILE_PARAM, currentElement, fileName);
break;
case APPEND_PARAM:
set(APPEND_PARAM, currentElement, append);
break;
case BUFFERED_IO_PARAM:
set(BUFFERED_IO_PARAM, currentElement, bufferedIo);
break;
case BUFFER_SIZE_PARAM:
set(BUFFER_SIZE_PARAM, currentElement, bufferSize);
break;
case THRESHOLD_PARAM:
set(THRESHOLD_PARAM, currentElement, level);
break;
case IMMEDIATE_FLUSH_PARAM:
set(IMMEDIATE_FLUSH_PARAM, currentElement, immediateFlush);
break;
}
break;
}
});
return createAppender(
name,
layout.get(),
filter.get(),
fileName.get(),
level.get(),
immediateFlush.get(),
append.get(),
bufferedIo.get(),
bufferSize.get(),
rollingPolicyClassName.get(),
activeFileName.get(),
fileNamePattern.get(),
minIndex.get(),
maxIndex.get(),
triggeringPolicy.get(),
configuration);
}