logging-log4net-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Bodewig (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LOG4NET-239) LoggingEvent m_cacheUpdatable is useless and even produce an unexpected behavior
Date Tue, 06 Sep 2011 09:58:09 GMT

     [ 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

       

Mime
View raw message