2012-10-06 1 views
10

Ist es möglich, von 5 verschiedenen Prozessen in die gleiche Protokolldatei zu schreiben?Log4Net Datei von vielen Prozessen schreiben

Ich benutze Log4Net für die Protokollierung, aber scheint nur 1 Prozess schreibt in die Datei, wenn ich diesen Prozess herunter, schreibt der zweite Prozess.

Ich möchte alle zusammen schreiben.

Wie?

Antwort

15

Wenn Sie in eine einzelne Datei aus mehreren Prozessen die MinimalLock als LockinModel zu Ihrem <appender> Knoten hinzufügen schreiben:

<appender .... > 
    ...... 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    ...... 
</appender> 

dies auf die Leistung einen gewissen Einfluss Vorsicht.

5

Obwohl @ Erwins Ratschlag in den meisten Fällen funktioniert, sollten Sie sich überlegen, ob eine bessere Architektur die Leistung verbessern kann.

Zum Beispiel hat Microsoft IIS-Server viele Arbeitsprozesse ausgeführt, jeder sendet Protokolleinträge zu IIS-Dienstprozess über eine Named Pipe. Und nur der IIS-Dienstprozess hat das Recht, in Protokolldateien zu schreiben. Auf diese Weise müssen Worker-Prozesse keine Protokolldateien sperren, und der Dienstprozess kann Einträge zwischenspeichern und in Batches schreiben.

Es ist sehr einfach, dem Ansatz von IIS zu folgen und eine gute Leistung zu erzielen. ohne Dateisperren.

(Aktualisiert: Sie können jetzt LogMaster4Net verwenden, die eine solche UDP-basierte Architektur implementiert.)