2016-09-07 2 views
1

habe ich zwei parallele Threads, die appender mit diesem Muster auf das gleiche logFile mit der log4net-Datei schreiben:Log4net Bestellprotokolleinträge für mehr Threads

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date{HH:mm:ss} %-5level - %message%newline" /> 
</layout> 

Das Problem ist, wenn ich einen Eintrag Protokoll wie hinzufügen:

_log.Info("Something to log"); 

ich werde mein Protokoll mit nicht bestellt Einträge, von Thread A und B finden Was ich möchte, ist haben:

Log File: 
    + Log 1 Thread A 
    + Log 2 Thread A 
    + Log 3 Thread A 
    + Log 1 Thread B 
    + Log 2 Thread B 

... und so weiter

Wie kann ich das erreichen? Gibt es etwas in Log4Net, das dies erreichen kann? Ich habe zuerst gelehrt, die Logs im Gedächtnis zu behalten und sie dann zu spülen, sobald der Thread fertig ist, aber es ist keine gute Idee, wenn der Prozess beendet wird, alle Einträge werden verloren gehen.

Bitte jede Hilfe wird geschätzt.

Dank

+0

Protokollierung wird normalerweise nach Zeitstempeln geordnet. Sie könnten zwei separate Protokolldateien erstellen. Oder besser: Loggen Sie sich in eine Datenbank ein. Sie können dann jede beliebige Filter-/Gruppierungs-/Sortierreihenfolge anwenden. – Stefan

+0

Hallo Stefan, danke für deine Antwort. Derzeit ist jeder Thread ein Prozess und es gibt eine Einschränkung für die Verwendung einer Protokolldatei. Wenn sich jeder Thread zur selben Zeit in derselben Datei anmeldet, wäre es unordentlich und überhaupt nicht lesbar. – MadNeox

Antwort

0

es, weil Sie Prozesse laufen 2 erscheint, können Sie einen Puffer nach vorne appender hinzufügen. Das folgende Beispiel zeigt, wie der BufferingForwardingAppender für die Pufferung von 100 Nachrichten konfiguriert wird, bevor sie an den ConsoleAppender übergeben werden.

<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" > 
    <bufferSize value="100"/> 
    <appender-ref ref="ConsoleAppender" /> 
</appender> 

Die Nachrichten teilweise Reihenfolge in Blöcken der BufferSize.

Verwandte Themen