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
Bunu denediniz mi? http://stackoverflow.com/a/2045992/26226 – jrummell
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
@jrummelli bunu denedi ancak aslında floş edilecek tamponlu mesajlar yok. Yani onun buffered.Flush() ulaşmak değil; – Vivekh