[
https://issues.apache.org/jira/browse/LOG4NET-239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Bodewig updated LOG4NET-239:
-----------------------------------
Fix Version/s: 1.2 Maintenance Release
> LoggingEvent m_cacheUpdatable is useless and even produce an unexpected
> behavior
> --------------------------------------------------------------------------------
>
> Key: LOG4NET-239
> URL: https://issues.apache.org/jira/browse/LOG4NET-239
> Project: Log4net
> Issue Type: Bug
> Affects Versions: 1.2.10
> Environment: .Net 2.0
> Reporter: François Dumont
> Fix For: 1.2 Maintenance Release
>
>
> I already notify my problem on the mailing but as I had no answer I finally
> prefered to report it here. Rather than copy/paste my mail I prefered to
> write a test that has to be added to the BufferingAppenderTest:
> [Test, Description("Check that use of the BufferingAppender shall not
> change the rendering of the log event.")]
> public void TestAppenderSkeletonBehavior()
> {
> SetupRepository();
> ObserverAppender observer = new ObserverAppender();
> m_bufferingForwardingAppender.AddAppender(observer);
> ILogger logger = m_hierarchy.GetLogger("test");
> logger.Log(typeof(BufferingAppenderTest), Level.Warn, "Message",
> new Exception("Exception"));
> Assert.AreEqual(1, observer.EventsCount);
> LoggingEvent loggingEvent1 = observer.Dequeue();
> // Lets see what happen if we do not fix the exception part of
> the logging event at the
> // buffering forwarding appender level and let underlying
> appenders deal with it:
> m_bufferingForwardingAppender.Fix ^= FixFlags.Exception;
> logger.Log(typeof(BufferingAppenderTest), Level.Warn, "Message",
> new Exception("Exception"));
> Assert.AreEqual(1, observer.EventsCount);
> LoggingEvent loggingEvent2 = observer.Dequeue();
> // The two logging events shall be similar:
> Assert.AreEqual(loggingEvent1.Level, loggingEvent2.Level);
> Assert.AreEqual(loggingEvent1.Domain, loggingEvent2.Domain);
> // Lets check the appender skeleton behavior: it normally renders
> the exception string info
> // if the layout do not do so invoking the GetExceptionString
> method.
> Assert.IsNotNull(loggingEvent1.GetExceptionString(),
> "Missing exception information when buffering
> appender fix it !");
> Assert.IsNotNull(loggingEvent2.GetExceptionString(),
> "Missing exception information when buffering
> appender do not fix it !");
> }
> This test needs this following small appender implementation to work:
> internal sealed class ObserverAppender : AppenderSkeleton
> {
> private readonly Queue<LoggingEvent> loggingEvents;
> public int EventsCount
> {
> get { return this.loggingEvents.Count; }
> }
> public ObserverAppender()
> {
> this.loggingEvents = new Queue<LoggingEvent>();
> }
> protected override void Append(LoggingEvent loggingEvent)
> {
> this.loggingEvents.Enqueue(loggingEvent);
> }
> public LoggingEvent Dequeue()
> {
> return this.loggingEvents.Dequeue();
> }
> }
> For info I try to comment m_cacheUpdatable = false and notice no regression
> when running tests. I would really be interested in knowing what this flag is
> for ?
> Thanks
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira