Author: carnold
Date: Mon Oct 22 14:05:24 2007
New Revision: 587252

URL: http://svn.apache.org/viewvc?rev=587252&view=rev
Log:
Bug 43599: AsyncAppender fails on changing message objects

Modified:
    logging/log4j/trunk/src/changes/changes.xml
    logging/log4j/trunk/src/main/java/org/apache/log4j/AsyncAppender.java
    
logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java

Modified: logging/log4j/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/changes/changes.xml?rev=587252&r1=587251&r2=587252&view=diff
==============================================================================
--- logging/log4j/trunk/src/changes/changes.xml (original)
+++ logging/log4j/trunk/src/changes/changes.xml Mon Oct 22 14:05:24 2007
@@ -22,6 +22,7 @@
   <body>
 
     <release version="1.2.16" date="TBD" description="">
+       <action action="fix" issue="43599">AsyncAppender failing on changing 
message objects.</action>
        <action action="fix" issue="43325">Subst-mechanism in DOMConfigurator 
broken.</action>
        <action action="fix" issue="43374">DailyRollingFileAppender may lose 
messages during failed rollover attempts.</action>
        <action action="fix" issue="43312">Fix mangled 
source-repository.html.</action>

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/AsyncAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/AsyncAppender.java?rev=587252&r1=587251&r2=587252&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/AsyncAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/AsyncAppender.java Mon 
Oct 22 14:05:24 2007
@@ -159,6 +159,7 @@
     if (locationInfo) {
       event.getLocationInformation();
     }
+    event.getRenderedMessage();
 
     synchronized (buffer) {
       while (true) {

Modified: 
logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java?rev=587252&r1=587251&r2=587252&view=diff
==============================================================================
--- 
logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java 
(original)
+++ 
logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java 
Mon Oct 22 14:05:24 2007
@@ -326,4 +326,35 @@
     }
 
 
+    /**
+     * Test that a mutable message object is evaluated before
+     * being placed in the async queue.
+     * See bug 43559.
+     */
+    public void testMutableMessage() {
+        BlockableVectorAppender blockableAppender = new 
BlockableVectorAppender();
+        AsyncAppender async = new AsyncAppender();
+        async.addAppender(blockableAppender);
+        async.setBufferSize(5);
+        async.setLocationInfo(false);
+        async.activateOptions();
+        Logger rootLogger = Logger.getRootLogger();
+        rootLogger.addAppender(async);
+        StringBuffer buf = new StringBuffer("Hello");
+        synchronized(blockableAppender.getMonitor()) {
+            rootLogger.info(buf);
+            buf.append(", World.");
+        }
+        async.close();
+        Vector events = blockableAppender.getVector();
+        LoggingEvent event = (LoggingEvent) events.get(0);
+        PatternLayout layout = new PatternLayout();
+        layout.setConversionPattern("%m");
+        layout.activateOptions();
+        String msg = layout.format(event);
+        assertEquals("Hello", msg);
+    }
+
+
+
 }



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

Reply via email to