Ich benutze grundlegende Parallel.Foreach Schleife auf Zufallszahlen, um die Nummer selbst mit log4net zu protokollieren.Log4net Protokollierung funktioniert nicht mit parallelen Threads
Hier ist mein Code 5000 Nachrichten auf parallele 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);
});
Aber am Ende nur in der Protokolldatei 1600 Nachrichten zu protokollieren.
Ist dies ein bekanntes Problem mit log4net? oder mache ich hier etwas falsch?
Ich habe die folgende Einstellung in der cofig basierend auf Answer verwendet und 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
Haben Sie das versucht? http://StackOverflow.com/a/2045992/26226 – jrummell
Bitte zeigen Sie Ihre Datei appender config, insbesondere die 'lockingModel', die Sie verwenden, und geben Sie an, welche Version von log4net Sie verwenden. – stuartd
@jrummelli hat es versucht, aber es gibt keine gepufferten Nachrichten zum eigentlichen Leeren. So erreicht es nicht gepuffert.Flush(); – Vivekh