This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 1f0a6c5  Parse and use ConsoleAppener immediateFlush.
1f0a6c5 is described below

commit 1f0a6c508d6cd539f4b13bfbb0624dcde60ce4f3
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Feb 4 16:41:02 2022 -0500

    Parse and use ConsoleAppener immediateFlush.
    
    Match other builders by deprecating with* APIs for set* APIs.
---
 .../builders/appender/ConsoleAppenderBuilder.java      | 18 ++++++++++--------
 .../core/appender/AbstractOutputStreamAppender.java    | 18 ++++++++++++++++++
 2 files changed, 28 insertions(+), 8 deletions(-)

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 de279c0..319c65a 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
@@ -73,6 +73,7 @@ public class ConsoleAppenderBuilder extends AbstractBuilder 
implements AppenderB
         AtomicReference<List<Filter>> filters = new AtomicReference<>(new 
ArrayList<>());
         AtomicReference<String> level = new AtomicReference<>();
         AtomicBoolean follow = new AtomicBoolean();
+        AtomicBoolean immediateFlush = new AtomicBoolean(true);
         forEachElement(appenderElement.getChildNodes(), currentElement -> {
             switch (currentElement.getTagName()) {
                 case LAYOUT_TAG:
@@ -113,18 +114,18 @@ public class ConsoleAppenderBuilder extends 
AbstractBuilder implements AppenderB
                         case FOLLOW_PARAM: {
                             String value = getValueAttribute(currentElement);
                             if (value == null) {
-                                LOGGER.warn("No value supplied for Follow 
parameter. Using default of {}", false);
+                                LOGGER.warn("No value supplied for Follow 
parameter. Using default of {}", follow);
                             } else {
-                                follow.set(Boolean.valueOf(value));
+                                follow.set(Boolean.parseBoolean(value));
                             }
                             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 if (!Boolean.getBoolean(name)) {
-                                LOGGER.warn("The value {} for ImmediateFlush 
parameter is not supported.", value);
+                                LOGGER.warn("No value supplied for 
ImmediateFlush parameter. Using default of {}", immediateFlush);
+                            } else {
+                                
immediateFlush.set(Boolean.parseBoolean(value));
                             }
                             break;
                         }
@@ -143,7 +144,7 @@ public class ConsoleAppenderBuilder extends AbstractBuilder 
implements AppenderB
             }
             current = f;
         }
-        return createAppender(name, layout.get(), head, level.get(), 
target.get(), follow.get(), config);
+        return createAppender(name, layout.get(), head, level.get(), 
target.get(), immediateFlush.get(), follow.get(), config);
     }
 
     @Override
@@ -154,11 +155,11 @@ public class ConsoleAppenderBuilder extends 
AbstractBuilder implements AppenderB
         String level = getProperty(THRESHOLD_PARAM);
         String target = getProperty(TARGET_PARAM);
         boolean follow = getBooleanProperty(FOLLOW_PARAM);
-        return createAppender(name, layout, filter, level, target, follow, 
configuration);
+        return createAppender(name, layout, filter, level, target, true, 
follow, configuration);
     }
 
     private <T extends Log4j1Configuration> Appender createAppender(String 
name, Layout layout, Filter filter,
-            String level, String target, boolean follow, T configuration) {
+            String level, String target, boolean immediateFlush, boolean 
follow, T configuration) {
         org.apache.logging.log4j.core.Layout<?> consoleLayout = null;
 
         if (layout instanceof LayoutWrapper) {
@@ -176,6 +177,7 @@ public class ConsoleAppenderBuilder extends AbstractBuilder 
implements AppenderB
                 .setLayout(consoleLayout)
                 .setFilter(consoleFilter)
                 .setConfiguration(configuration)
+                .setImmediateFlush(immediateFlush)
                 .build());
     }
 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
index 25803a3..a6411fc 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
@@ -61,16 +61,34 @@ public abstract class AbstractOutputStreamAppender<M 
extends OutputStreamManager
             return immediateFlush;
         }
 
+        public B setImmediateFlush(final boolean immediateFlush) {
+            this.immediateFlush = immediateFlush;
+            return asBuilder();
+        }
+
+        public B setBufferedIo(final boolean bufferedIo) {
+            this.bufferedIo = bufferedIo;
+            return asBuilder();
+        }
+
+        public B setBufferSize(final int bufferSize) {
+            this.bufferSize = bufferSize;
+            return asBuilder();
+        }
+
+        @Deprecated
         public B withImmediateFlush(final boolean immediateFlush) {
             this.immediateFlush = immediateFlush;
             return asBuilder();
         }
 
+        @Deprecated
         public B withBufferedIo(final boolean bufferedIo) {
             this.bufferedIo = bufferedIo;
             return asBuilder();
         }
 
+        @Deprecated
         public B withBufferSize(final int bufferSize) {
             this.bufferSize = bufferSize;
             return asBuilder();

Reply via email to