Ceki,

Thank you for you prompt response.
There is not any problem composing them except that
the LoggingEvent object deserialized post-JMSAppender
has instance variables category = null and
fqnOfCategoryClass = null.
This appears to cause an Exception from line ~828 of
JDBCAppender.java which creates a new LoggingEvent(...)
with the first two constructor arguments being null.
When I traced this, the LoggingEvent constructor seemed
to throw an exception.  I did not trace into this constructor
but now I am curious so I will do that.

- Joe

-----Original Message-----
From: Ceki Gulcu <[EMAIL PROTECTED]>
To: Log4J Users List <[EMAIL PROTECTED]>
Date: Tuesday, November 20, 2001 9:19 AM
Subject: Re: JDBCAppender from JMSAppender


>
>Hmm, all this sounds very suspicious to me. There
>should be no problems with composing JMSAppender and
>JDBCAppender. All the work is done during
>serialization of logging event. Have you looked at
>JMSSink? Regards, Ceki
>
>--- Joe Sackett <[EMAIL PROTECTED]> wrote:
>> I have log4j logging inside of Orion 1.5.2 under JDK
>> 1.3.1_01.
>> I have the JDBCAppender working for logging events
>> initiated
>> inside of the web and ejb containers.  However, I
>> also have
>> external applications running outside of the app
>> server that
>> I need to have logged via the same JDBCAppender.  I
>> use a
>> JMSAppender to log from those external apps.  This
>> is where
>> things got a little sticky.  Since the JMSAppender
>> must serialize
>> the LoggingEvent object, its reference to the
>> Category is lost
>> for obvious reasons.  However, after this Logging
>> event arrives
>> into the JMS Topic, the JDBCAppender does not  like
>> the
>> null instance variables LoggingEvent.category and
>> LoggingEvent.fqnOfCategoryClass.  I have attached a
>> workaround for this problem (lines 828 - 837) in the
>> file
>> JDBCAppender.java.
>> A related issue I experienced with the interaction
>> between
>> these two appenders  is that the deserialized event
>> is
>> (of course) unable to lookup its location
>> information context
>> (e.g. file, line, etc.) but CAN use the cached
>> LocationInfo object
>> that was deserialized along with the LoggingEvent.
>> A problem
>> occurs when the JDBCAppender internally creates a
>> new event
>> from the state of the deserialized event.  This new
>> event does
>> not have the cached LocationInfo object and can not
>> look it up.
>> I attached another workaround (lines 457 - 475) in
>> the file
>> JDBCLogger.java.
>> I now have it working for my purposes.  Hopefully my
>> attached
>> changes will further illuminate the issues.  I am
>> sure there are
>> solutions that consider more than my specific
>> workarounds.
>> Thank you for these useful appenders.  Please let me
>> know if I
>> need to further explain these issues and
>> workarounds.
>>
>> - Joe
>>
>>
>
>> ATTACHMENT part 2 application/octet-stream
>name=JDBCAppender.java
>
>
>> ATTACHMENT part 3 application/octet-stream
>name=JDBCLogger.java
>> --
>> To unsubscribe, e-mail:
>> <mailto:[EMAIL PROTECTED]>
>> For additional commands, e-mail:
><mailto:[EMAIL PROTECTED]>
>
>
>__________________________________________________
>Do You Yahoo!?
>Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
>http://geocities.yahoo.com/ps/info1
>
>--
>To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>


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

Reply via email to