Ich versuche NLog Leistung (neueste Version) mit Einstellungen zu testen:Warum verpasst NLog einige Meldungen beim Protokollieren einer großen Anzahl von Nachrichten?
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">
<variable name="basePath" value="c:\logs\" />
<variable name="msgFormat" value="${message}" />
<targets async="true">
<target name="file"
xsi:type="File"
fileName="${basePath}/${logger}/${date:format=yyyy}/${date:format=MMMM}/log-${date:format=yyMMdd}-${level}.log"
layout="${msgFormat}"
concurrentWrites="true" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file"/>
</rules>
</nlog>
und führen Sie diesen Code:
var msg = "this is example string for logging test. it's not very long, but not very short";
var count = 20000;
Parallel.For(0, count, x => nlog.Info(msg));
NLog Datei schreibt, aber wenn die Dateigröße 1 MB erreicht er aufhört zu schreiben. Ich versuche, einfache for
Schleife zu verwenden, aber es hilft mir nicht. Und ich versuche internal logging zu verwenden, aber keine Fehler ist, nebenbei gesagt sehe ich diese Strings dort:
2013-04-01 11: 36: 18,2458 Trace Opening c: \ logs/NLogTest/2013 /April/log-130401-Info.log mit concurrentWrite = false
Es ist sehr seltsam, weil concurrentWrites Standardwert true
ist außerdem habe ich diesen Wert in Config gesetzt.
Ist es anders, wenn Sie es in einem einzigen Thread anstelle von Parallelität versuchen? [Bearbeiten] Egal, dass du das schon geschrieben hast. – CSharpie
Es gibt keinen Unterschied mit einem einzelnen Thread - wenn Datei 1MB Größe bekommt, hört es auf, es anzuhängen. – Boo