Author: carnold
Date: Fri Dec 15 16:07:02 2006
New Revision: 487725
URL: http://svn.apache.org/viewvc?view=rev&rev=487725
Log:
Bug 41186: DiscardSummary events create NPE in layouts
Modified:
logging/log4j/trunk/src/java/org/apache/log4j/AsyncAppender.java
logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java
Modified: logging/log4j/trunk/src/java/org/apache/log4j/AsyncAppender.java
URL:
http://svn.apache.org/viewvc/logging/log4j/trunk/src/java/org/apache/log4j/AsyncAppender.java?view=diff&rev=487725&r1=487724&r2=487725
==============================================================================
--- logging/log4j/trunk/src/java/org/apache/log4j/AsyncAppender.java (original)
+++ logging/log4j/trunk/src/java/org/apache/log4j/AsyncAppender.java Fri Dec 15
16:07:02 2006
@@ -465,7 +465,11 @@
new Object[] { new Integer(count), maxEvent.getMessage() });
return new LoggingEvent(
- null, maxEvent.getLogger(), maxEvent.getLevel(), msg, null);
+ "org.apache.log4j.AsyncAppender.DONT_REPORT_LOCATION",
+ maxEvent.getLogger(),
+ maxEvent.getLevel(),
+ msg,
+ null);
}
}
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?view=diff&rev=487725&r1=487724&r2=487725
==============================================================================
---
logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java
(original)
+++
logging/log4j/trunk/tests/src/java/org/apache/log4j/AsyncAppenderTestCase.java
Fri Dec 15 16:07:02 2006
@@ -446,6 +446,73 @@
}
}
+
+ /**
+ * Tests location processing when buffer is full and locationInfo=true.
+ * See bug 41186.
+ */
+ public void testLocationInfoTrue() {
+ BlockableVectorAppender blockableAppender = new
BlockableVectorAppender();
+ AsyncAppender async = new AsyncAppender();
+ async.addAppender(blockableAppender);
+ async.setBufferSize(5);
+ async.setLocationInfo(true);
+ async.setBlocking(false);
+ async.activateOptions();
+ Logger rootLogger = Logger.getRootLogger();
+ rootLogger.addAppender(async);
+ Greeter greeter = new Greeter(rootLogger, 100);
+ synchronized(blockableAppender.getMonitor()) {
+ greeter.run();
+ rootLogger.error("That's all folks.");
+ }
+ async.close();
+ Vector events = blockableAppender.getVector();
+ LoggingEvent initialEvent = (LoggingEvent) events.get(0);
+ LoggingEvent discardEvent = (LoggingEvent) events.get(events.size() -
1);
+ PatternLayout layout = new PatternLayout();
+ layout.setConversionPattern("%C:%L %m%n");
+ layout.activateOptions();
+ String initialStr = layout.format(initialEvent);
+ assertEquals(AsyncAppenderTestCase.class.getName(),
+ initialStr.substring(0,
AsyncAppenderTestCase.class.getName().length()));
+ String discardStr = layout.format(discardEvent);
+ assertEquals("?:? ", discardStr.substring(0, 4));
+ }
+
+
+ /**
+ * Tests location processing when buffer is full and locationInfo=false.
+ * See bug 41186.
+ */
+ public void testLocationInfoFalse() {
+ BlockableVectorAppender blockableAppender = new
BlockableVectorAppender();
+ AsyncAppender async = new AsyncAppender();
+ async.addAppender(blockableAppender);
+ async.setBufferSize(5);
+ async.setLocationInfo(false);
+ async.setBlocking(false);
+ async.activateOptions();
+ Logger rootLogger = Logger.getRootLogger();
+ rootLogger.addAppender(async);
+ Greeter greeter = new Greeter(rootLogger, 100);
+ synchronized(blockableAppender.getMonitor()) {
+ greeter.run();
+ rootLogger.error("That's all folks.");
+ }
+ async.close();
+ Vector events = blockableAppender.getVector();
+ LoggingEvent initialEvent = (LoggingEvent) events.get(0);
+ LoggingEvent discardEvent = (LoggingEvent) events.get(events.size() -
1);
+ PatternLayout layout = new PatternLayout();
+ layout.setConversionPattern("%C:%L %m%n");
+ layout.activateOptions();
+ String initialStr = layout.format(initialEvent);
+ assertEquals("?:? ", initialStr.substring(0, 4));
+ String discardStr = layout.format(discardEvent);
+ assertEquals("?:? ", discardStr.substring(0, 4));
+ }
+
/**
* Tests behavior when wrapped appender
* makes log request on dispatch thread.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]