logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefano Nichele <stefano.nich...@gmail.com>
Subject Re: why AppenderSkeleton.doAppend is synchronized ?
Date Thu, 11 Mar 2010 09:06:56 GMT
Thanks a lot Curt,
it was my suspicion.

cheers,
Ste

On 11/03/2010 6.00, Curt Arnold wrote:
> On Mar 10, 2010, at 10:37 AM, Stefano Nichele wrote:
>
>    
>> Hi all,
>> looking for perfomance issue in my server application, I found that AppenderSkeleton.doAppend
method is synchronized.
>> I google a bit and I have found some messages but not a clear anwser to my doubt:
why that method is synchronized ? it seems that just check the threshold, the filter and that
"append" the event but in this way is serializing all log calls. I'm logging events on the
db and also using AsyncAppender + my own appender I'm not able to obtain good performance
since just one thread at time can append (insert) an event and the AsyncAppender queue grows
pretty quick.
>>
>> For sure i'm missing something...could you help me to understand the root reason
for having it synchronized ? I'm thinking to have my owm implementation of AppenderSkeleton
removing synchronization but I'm not sure if there are drawbacks that im not taking in consideration.
>>
>> Thanks a lot in advance
>> ste
>>
>>
>>      
> log4j 1.2 was designed a long time ago and relies on that big lock to provide thread
safety.  Other classes in log4j (layouts, appenders and the like) were designed assuming that
they would be externally synchronized by that lock and likely not safe if that lock is bypassed.
>
> You could either implement the Appender interface or extend AppenderSkeleton but override
doAppend (copying and pasting the implementation but without the synchronized modifier, but
all appenders, layouts, etc used must be able to operate safely without that lock.
>
> Addressing this issue is one of the core design goals for log4j 2.0 (http://issues.apache.org/jira/browse/LOG4J2-3)
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-user-help@logging.apache.org
>
>
>    


-- 
Stefano Nichele

Funambol Chief Architect
Funambol :: Open Source Mobile Cloud Sync and Push Email



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Mime
View raw message