I am working with log4net version : 1.2.12.0 .


I am getting inconsistent results , while using RollingFileAppender with
BufferingForwardAppender.

My application is a multithreaded application. I spawned 5 threads Each
will call the constructor of MyClass and SomeFunction once.

My application's sertup is as follows:



Web.config:

-------------------------------

 <appender name="RollingLocalFileAppender" type="
log4net.Appender.RollingFileAppender
<http://opengrok.factset.com/source/s?path=log4net.Appender.RollingFileAppender&project=/platform/wauds/mainline>
">
      <file type="log4net.Util.PatternString
<http://opengrok.factset.com/source/s?path=log4net.Util.PatternString&project=/platform/wauds/mainline>
" value="C:\Logs\TFile.log" />
      <rollingStyle value="Date" />
     <datePattern value="yyyy-MM-dd" />
     <maxSizeRollBackups value="10" />
      <appendToFile value="true" />
     <layout type="log4net.Layout.PatternLayout
<http://opengrok.factset.com/source/s?path=log4net.Layout.PatternLayout&project=/platform/wauds/mainline>
">
        <conversionPattern value="%level %date{yyyy-MM-dd'T'HH:mm:ss.fffzzz
<http://opengrok.factset.com/source/s?path=ss.fffzzz&project=/platform/wauds/mainline>}
%property{hostname}  %property{guid} %message%newline" />
     </layout>
    </appender>
    <appender name="BufferedFileAppender" type="
log4net.Appender.BufferingForwardingAppender
<http://opengrok.factset.com/source/s?path=log4net.Appender.BufferingForwardingAppender&project=/platform/wauds/mainline>
">
      <bufferSize value="512" />
     <evaluator type="log4net.Core.TimeEvaluator
<http://opengrok.factset.com/source/s?path=log4net.Core.TimeEvaluator&project=/platform/wauds/mainline>
">

        <interval value="10" />
        <!--Send buffered events immediately if 10 seconds pass-->
      </evaluator>
      <Fix value="0" />
     <!--Buffering can have severe performance degradation if this is set
to the default (ALL)-->
    </appender>





Logging Class:

--------------------------



Class MyClass

{

public MyClass()

{

Log4net.ThreadContext.Properties["guid"] = Guid.NewGuid();

}



public void SomeFunction()

{

Ilog log = LogManager.GetLogger(typeof(MyClass));

Log.Info("my message");

}



}





Tfile.log(Result)

----------------------

Observed Results:



INFO 2014-08-14T10:47:36.659-04:00 ANANTHTATACHAR MyAudsDigest
[LQR-Y8c71EmtWl7ZqItYoQ] my message

INFO 2014-08-14T10:47:36.659-04:00  ANANTHTATACHAR MyAudsDigest
[9hDzS-_Su0SrEoXZF_aGMw] my message

INFO 2014-08-14T10:47:36.729-04:00 ANANTHTATACHAR MyAudsDigest
[GsxT7aTfNEq1uIsqPYeZ5w]  my message

INFO 2014-08-14T10:47:36.789-04:00 ANANTHTATACHAR MyAudsDigest
[9hDzS-_Su0SrEoXZF_aGMw] my message

INFO 2014-08-14T10:47:36.955-04:00 ANANTHTATACHAR MyAudsDigest
[9hDzS-_Su0SrEoXZF_aGMw] my message







Expected Results:

Unique guid in all the messages.











--------------------------------------------------------------------------------------------------------------------------------------



I understand that Fix value  NONE in
log4net.Appender.BufferingForwardingAppender
<http://opengrok.factset.com/source/s?path=log4net.Appender.BufferingForwardingAppender&project=/platform/wauds/mainline>
will not fix any volatile variables , but making it all results in all my
guids in all the 5 messages becoming same.



Could anybody please tell me how to fix this issue?

Reply via email to