DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41186>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41186

           Summary: AsyncAppender in 1.2.14 DiscardSummary events create
                    NullPointerExceptions in layouts
           Product: Log4j
           Version: 1.2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Appender
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


The 1.2.14 version of the AsyncAppender creates LoggingEvent's from
DiscardSummary objects with null fqnOfCategoryClass.  This causes layouts that
call getLocationInformation() on the LoggingEvent to throw a 
NullPointerException:

Exception in thread "Dispatcher-Thread-6"
java.lang.NullPointerException
     at java.lang.String.lastIndexOf(Unknown Source)
     at java.lang.String.lastIndexOf(Unknown Source)
     at org.apache.log4j.spi.LocationInfo.<init>(LocationInfo.java:119)
     at
org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:191)
     at
org.apache.log4j.helpers.PatternParser$ClassNamePatternConverter.getFullyQualifiedName(PatternParser.java:538)
     at
org.apache.log4j.helpers.PatternParser$NamedPatternConverter.convert(PatternParser.java:511)
     at 
org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:64)
     at org.apache.log4j.PatternLayout.format(PatternLayout.java:503)
     at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:301)
     at org.apache.log4j.WriterAppender.append(WriterAppender.java:159)
     at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
     at
org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
     at org.apache.log4j.AsyncAppender$Dispatcher.run(AsyncAppender.java:578)
     at java.lang.Thread.run(Unknown Source)

This kills off the Dispatcher thread, reverting to synchronous logging.

Steps to Reproduce:
1. Configure an appender with a PatternLayout that retrieves LocationInfo:

<appender name="TestAppender" class="org.apache.log4j.FileAppender">
  <param name="file" value="/tmp/afile.log" />
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%C:%L %m%n" />
  </layout>
</appender>

2. Configure a second AsyncAppender that references the first appender as 
follows:

<appender name="MyAsyncAppender" class="org.apache.log4j.AsyncAppender">
  <param name="locationInfo" value="true" />
  <param name="blocking" value="false" />
  <param name="bufferSize" value="1" />
  <appender-ref ref="TestAppender" />
</appender>

3. Create a scenario where the buffer in the AsyncAppender fills up, generating
discard events.  (Should be pretty easy with a bufferSize=1)

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

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

Reply via email to