[
https://issues.apache.org/jira/browse/LOG4NET-447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14242517#comment-14242517
]
Gregory Babski commented on LOG4NET-447:
----------------------------------------
I did in fact implement a custom appender that extends MemoryAppender - based
off of a much older version of log4net. I came to depend on the memory appender
when our code is run in a manual test framework - redirecting log events to UI
(rather than to file or syslog when the code runs ion production.) My
implementation was initially aimed at fixing the ArrayOutOfBounds Exception, as
I discovered is now fixed as described in
https://issues.apache.org/jira/browse/LOG4NET-167.
I was updating our log4net dependencies and saw that fix and realised I could
offer my changes for consideration.
Regarding the use obsolete tag - I defer to your experience, since I have never
had to maintain widely used library.
Thanks for the feedback!
> 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)