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]