简体   繁体   English

Log4net 日志记录不适用于并行线程

[英]Log4net logging is not working with parallel threads

I am using basic Parallel.Foreach loop on Random numbers to log number itself using log4net.我在随机数上使用基本的 Parallel.Foreach 循环来使用 log4net 记录数字本身。

Here is my code to log 5000 messages on parallel threads这是我在并行线程上记录 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);
            });

But in the end only see 1600 messages in the log file.但最后只在日志文件中看到了 1600 条消息。

Is this a known issue with log4net ?这是 log4net 的已知问题吗? or am i doing something wrong here ?还是我在这里做错了什么?

I used the below setting in the cofig based on Answer and its still the same.我在基于Answer的配置中使用了以下设置,它仍然相同。

<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 version : 1.2.15.0 Log4net 版本:1.2.15.0

您正在写入 GlobalContext,我想您需要写入 ThreadLogicalContext 才能让它按您想要的方式工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM