[ https://issues.apache.org/jira/browse/LOG4NET-447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14240946#comment-14240946 ]
Dominik Psenner commented on LOG4NET-447: ----------------------------------------- Hi there, thanks for sharing your contribution. I've looked into the diff and it is straight forward and looks good. Two things that I would like to be discussed/changed before I will apply the patch: Marking the other methods as obsolete is probably not a wise decision since people might still want to get events without clearing them or clear events without wasting memory to get them. In general, the memory appender was not invented to be a threadsafe FIFO queue. This said, is there a special reason why you did not create a new class that extends the MemoryAppender and adds your functionality? Cheers > MemoryAppender class is not thread safe > --------------------------------------- > > Key: LOG4NET-447 > URL: https://issues.apache.org/jira/browse/LOG4NET-447 > Project: Log4net > Issue Type: Bug > Components: Appenders > Affects Versions: 1.2.13 > Environment: .NET Framework 4.0 (Full Profile) > Reporter: Gregory Babski > Priority: Minor > Attachments: MemoryAppenderTest.cs, MemoryAppender_ThreadSafety.diff > > > The memory appender cannot be used safely in an application that uses more > than one thread to interact with logging. > When using this code to retrieve and then clear events logged in the memory > appender: > var events = memoryAppender.GetEvents(); > memoryAppender.Clear(); > The executing thread may be preempted between these two calls and additional > logging events logged. These events are then cleared when the thread resumes > execution - and are never seen/processed. > I expect to be be able to retrieve and clear the list of current events in > one call that guarantees that no events are ever lost. -- This message was sent by Atlassian JIRA (v6.3.4#6332)