public RollingRandomAccessFileAppender build()

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());
        }