Okay, let me finish, I'm sorry I hit send early by mistake. :-)
On Fri, 2003-10-24 at 15:26, Elias Ross wrote:
>
> Here is the stack trace:
org.apache.log4j.WriterAppender.append(WriterAppender.java:150)
org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)
- locked <d6655dd0> (a
org.jboss.logging.appender.DailyRollingFileAppender)
org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)
org.apache.log4j.Category.callAppenders(Category.java:187)
- locked <d52e5db0> (a org.apache.log4j.spi.RootCategory)
I suggest what needs to happen is that the rendering stage has to take
place without holding any locks. But that would mean that
AppenderSkeleton would have to be re-written (but only slightly):
1. Holding locks, all major pre-conditions are checked. (Is the event
filterable? Is the threshold set too low?)
2. The message is rendered.
3. Holding any final locks necessary to actually write/output the
message, the rendered message is then sent to disk/the network/wherever.
I've run into this problem two times: One time while using JBoss,
another time using a third-party library that uses log4j. Since more
and more libraries and platforms use log4j (or commons-logging), this
sort of "rendering-interference"--especially on multiple-CPU
machines--is very worrisome.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]