You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2005/10/19 18:42:31 UTC

svn commit: r326604 - /logging/log4j/trunk/src/java/org/apache/log4j/ConsoleAppender.java

Author: carnold
Date: Wed Oct 19 09:42:27 2005
New Revision: 326604

URL: http://svn.apache.org/viewcvs?rev=326604&view=rev
Log:
Bug 37122: Console redirction in 1.2.12 causes infinite loop in JBoss

Modified:
    logging/log4j/trunk/src/java/org/apache/log4j/ConsoleAppender.java

Modified: logging/log4j/trunk/src/java/org/apache/log4j/ConsoleAppender.java
URL: http://svn.apache.org/viewcvs/logging/log4j/trunk/src/java/org/apache/log4j/ConsoleAppender.java?rev=326604&r1=326603&r2=326604&view=diff
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/ConsoleAppender.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/ConsoleAppender.java Wed Oct 19 09:42:27 2005
@@ -33,6 +33,13 @@
     protected String target = SYSTEM_OUT;
 
     /**
+     *  Determines if the appender honors reassignments of System.out
+     *  or System.err made after configuration.
+     */
+    private boolean honorReassignment = false;
+
+
+    /**
      * Constructs an unconfigured appender.
      */
     public ConsoleAppender() {
@@ -87,14 +94,45 @@
         return target;
     }
 
+   /**
+    *  Sets whether the appender honors reassignments of System.out
+    *  or System.err made after configuration.
+    *  @param newValue if true, appender will use value of System.out or
+    *  System.err in force at the time when logging events are appended.
+    *  @since 1.2.13
+    */
+    public final void setHonorReassignment(final boolean newValue) {
+       honorReassignment = newValue;
+    }
+  
+   /**
+    *  Gets whether the appender honors reassignments of System.out
+    *  or System.err made after configuration.
+    *  @return true if appender will use value of System.out or
+    *  System.err in force at the time when logging events are appended.
+    *  @since 1.2.13
+    */
+    public final boolean getHonorReassignment() {
+         return honorReassignment;
+    }
+
+
     /**
      *   Prepares the appender for use.
      */
     public void activateOptions() {
-        if (target.equals(SYSTEM_ERR)) {
-            setWriter(createWriter(new SystemErrStream()));
+        if (honorReassignment) {
+            if (target.equals(SYSTEM_ERR)) {
+               setWriter(createWriter(new SystemErrStream()));
+            } else {
+               setWriter(createWriter(new SystemOutStream()));
+            }
         } else {
-            setWriter(createWriter(new SystemOutStream()));
+            if (target.equals(SYSTEM_ERR)) {
+               setWriter(createWriter(System.err));
+            } else {
+               setWriter(createWriter(System.out));
+            }
         }
 
         super.activateOptions();
@@ -106,7 +144,9 @@
   protected
   final
   void closeWriter() {
-     super.closeWriter();
+     if (honorReassignment) {
+        super.closeWriter();
+     }
   }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org