Log4net-Protokollierung funktioniert nicht mit parallelen Threads
Ich verwende eine grundlegende Parallel.Foreach-Schleife für Zufallszahlen, um die Nummer selbst mit log4net zu protokollieren.
Hier ist mein Code, um 5000 Nachrichten auf parallelen Threads zu protokollieren
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);
});
Aber am Ende werden nur 1600 Nachrichten in der Protokolldatei angezeigt.
Ist dies ein bekanntes Problem mit log4net? oder mache ich hier etwas falsch?
Ich habe die folgende Einstellung in der Cofig verwendet, basierend aufAntworteund es ist immer noch das gleiche.
<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