2016-03-22 37 views
0

log4netを使用してログ番号自体にランダムな番号の基本的なParallel.Foreachループを使用しています。ここでLog4netのロギングが並列スレッドで動作しない

は並列スレッドに5000のメッセージ

  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); 
      }); 

を記録しかし、最終的には唯一のログファイルに1600件のメッセージを見るために私のコードです。

これはlog4netの既知の問題ですか?私はここで何か間違っているのですか?

私はAnswerに基づいてcofigに以下の設定を使用しましたが、それでも同じです。

<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のバージョン:1.2.15.0

+0

これを試しましたか? http://stackoverflow.com/a/2045992/26226 – jrummell

+0

あなたのファイルappender config、特にあなたが使っている 'lockingModel'を表示して、使用しているlog4netのバージョンを指定してください。 – stuartd

+0

@jrummelliはそれを試しましたが、実際にフラッシュするためのバッファされたメッセージはありません。だから、バッファリングされていない.Flush(); – Vivekh

答えて

0

あなたはGlobalContextに書いている、私はあなたがそれはあなたが望むように取り組んで取得する代わりにThreadLogicalContextに書く必要があると思います。

+0

LogicalThreadContextに変更したところ、他にもいくつか問題があります。私はログ内のカスタムフィールドのプロパティを見ることができず、最初の問題は依然として1つのログしか見ることができませんでした2016-03-23 11:38:16,425 [10] INFO Logger(null)(null)(null) z – Vivekh

関連する問題