Followup for r816252/r891328
authorkkolinko <kkolinko@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 9 Jan 2010 03:59:59 +0000 (03:59 +0000)
committerkkolinko <kkolinko@13f79535-47bb-0310-9956-ffa450edef68>
Sat, 9 Jan 2010 03:59:59 +0000 (03:59 +0000)
Allow to disable buffering in JULI FileHandler
The previous implementation did not work as expected because of buffering performed by OutputStreamWriter

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@897380 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/juli/FileHandler.java

index 964722b..244348a 100644 (file)
@@ -145,7 +145,16 @@ public class FileHandler
         try {
             PrintWriter writer = this.writer;
             if (writer!=null) {
-                writer.write(result);
+                if (bufferSize > 0) {
+                    writer.write(result);
+                } else {
+                    synchronized (this) {
+                        // OutputStreamWriter performs buffering inside its StreamEncoder,
+                        // and so to run without a buffer we have to flush explicitly
+                        writer.write(result);
+                        writer.flush();
+                    }
+                }
             } else {
                 reportError("FileHandler is closed or not yet initialized, unable to log ["+result+"]", null, ErrorManager.WRITE_FAILURE);
             }