Author: carnold
Date: Wed Oct 19 09:28:19 2005
New Revision: 326599

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

Modified:
    
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/ConsoleAppender.java

Modified: 
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/ConsoleAppender.java
URL: 
http://svn.apache.org/viewcvs/logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/ConsoleAppender.java?rev=326599&r1=326598&r2=326599&view=diff
==============================================================================
--- 
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/ConsoleAppender.java
 (original)
+++ 
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/ConsoleAppender.java
 Wed Oct 19 09:28:19 2005
@@ -36,6 +36,12 @@
   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() {
@@ -89,6 +95,28 @@
   String getTarget() {
     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;
+  }
 
   void targetWarn(String val) {
     LogLog.warn("["+val+"] should be System.out or System.err.");
@@ -99,10 +127,18 @@
     *   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();
@@ -114,7 +150,9 @@
   protected
   final
   void closeWriter() {
-     super.closeWriter();
+     if (honorReassignment) {
+        super.closeWriter();
+     }
   }
   
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to