2016-03-22 17 views
0

Log4net kullanarak günlüğe kaydetmek için rasgele sayılarda temel Parallel.Foreach döngüsünü kullanıyorum. Log4net günlüğü, paralel iş parçacıkları ile çalışmaz

Burada sadece günlük dosyasında 1600 iletileri görmek paralel iplikler

  Logger logger = new Logger(); 
      var numbers = Enumerable.Range(1, 5000); 
      ParallelOptions parallelOptions = 
        new ParallelOptions() 
        { 
         MaxDegreeOfParallelism = Environment.ProcessorCount 
        }; 
      Parallel.ForEach(numbers, parallelOptions, number => 
      { 
       logger.Write(Level.Info, "main method", "" + number + "", loggingParameters); 
      }); 

tarihinde Ama sonunda 5000 mesajları oturum benim koddur.

Bu, log4net ile bilinen bir sorun mu? ya da burada yanlış bir şey mi yapıyorum?

Aşağıdaki ayarı Answer temel alınarak ve yine de aynı şekilde kullanıyorum.

<param name="ImmediateFlush" value="true" /> 

<log4net debug="false"> 

    <appender name="GeneralRollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <file type="log4net.Util.PatternString" value="Logs/All/all_" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd'.log'" /> 
     <maxSizeRollBackups value="10" /> 
     <staticLogFileName value="false" /> 
     <param name="ImmediateFlush" value="true" /> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="INFO" /> 
     <levelMax value="INFO" /> 
     </filter> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %message%newline" /> 

     </layout> 
    </appender> 
    <root> 
     <appender-ref ref="GeneralRollingFileAppender" /> 
    </root> 
    </log4net> 

log4net sürümü: Sen GlobalContext yazıyoruz 1.2.15.0

+0

Bunu denediniz mi? http://stackoverflow.com/a/2045992/26226 – jrummell

+0

Lütfen dosya uygulamanızı, özellikle de kullandığınız 'kilitlemeModel'i gösterin ve hangi log4net sürümünü kullandığınızı belirtin. – stuartd

+0

@jrummelli bunu denedi ancak aslında floş edilecek tamponlu mesajlar yok. Yani onun buffered.Flush() ulaşmak değil; – Vivekh

cevap

0

, sana bunun yerine istediğiniz şekilde çalışma olsun ThreadLogicalContext yazmak gerekir sanırım.

+0

LogicalThreadContext olarak değiştirdim, sonra başka sorunlarım var. Günlüğündeki özel alan özelliklerini göremiyorum ve aynı zamanda ilk sorun hala sadece bir günlüğü görmeye devam ediyor. 2016-03-23 ​​11: 38: 16,425 [10] INFO Logger (null) (null) (null) - z – Vivekh

İlgili konular