Log4net日志记录不适用于并行线程 [英] Log4net logging is not working with parallel threads
问题描述
我在随机数上使用基本的Parallel.Foreach循环,以使用log4net记录数字本身.
I am using basic Parallel.Foreach loop on Random numbers to log number itself using log4net.
这是我的代码,用于在并行线程上记录5000条消息
Here is my code to log 5000 messages on parallel threads
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条消息.
But in the end only see 1600 messages in the log file.
这是log4net的已知问题吗?还是我在这里做错了什么?
Is this a known issue with log4net ? or am i doing something wrong here ?
我在基于 Answer 的cofig中使用了以下设置,并且该设置仍然相同.
I used the below setting in the cofig based on Answerand its still the same.
<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
Log4net version : 1.2.15.0
推荐答案
您正在写GlobalContext,我想您需要写ThreadLogicalContext来使它按您想要的方式工作.
You are writing to the GlobalContext, I guess you need to write to the ThreadLogicalContext instead to get it working the way you want.
这篇关于Log4net日志记录不适用于并行线程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!