in log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppender.java [97:169]
public RollingRandomAccessFileAppender build() {
final String name = getName();
if (name == null) {
LOGGER.error("No name provided for FileAppender");
return null;
}
if (strategy == null) {
if (fileName != null) {
strategy = DefaultRolloverStrategy.newBuilder()
.withCompressionLevelStr(String.valueOf(Deflater.DEFAULT_COMPRESSION))
.withConfig(getConfiguration())
.build();
} else {
strategy = DirectWriteRolloverStrategy.newBuilder()
.withCompressionLevelStr(String.valueOf(Deflater.DEFAULT_COMPRESSION))
.withConfig(getConfiguration())
.build();
}
} else if (fileName == null && !(strategy instanceof DirectFileRolloverStrategy)) {
LOGGER.error(
"RollingFileAppender '{}': When no file name is provided a DirectFileRolloverStrategy must be configured");
return null;
}
if (filePattern == null) {
LOGGER.error("No filename pattern provided for FileAppender with name " + name);
return null;
}
if (policy == null) {
LOGGER.error("A TriggeringPolicy must be provided");
return null;
}
final Layout<? extends Serializable> layout = getOrCreateLayout();
final boolean immediateFlush = isImmediateFlush();
final int bufferSize = getBufferSize();
final RollingRandomAccessFileManager manager =
RollingRandomAccessFileManager.getRollingRandomAccessFileManager(
fileName,
filePattern,
append,
immediateFlush,
bufferSize,
policy,
strategy,
advertiseURI,
layout,
filePermissions,
fileOwner,
fileGroup,
getConfiguration());
if (manager == null) {
return null;
}
manager.initialize();
return new RollingRandomAccessFileAppender(
name,
layout,
getFilter(),
manager,
fileName,
filePattern,
isIgnoreExceptions(),
immediateFlush,
bufferSize,
advertise ? getConfiguration().getAdvertiser() : null,
getPropertyArray());
}