我嘗試測試與設置NLOG性能(最新版本):爲什麼記錄大量消息時NLog會丟失一些消息?
<?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>
,並運行此代碼:
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寫入文件,但是當文件大小達到1MB它停止寫作。我嘗試使用簡單的for
循環,但它對我沒有幫助。 我嘗試使用internal logging,但沒有錯誤,由我看到有這個字符串的方式:
2013年4月1日11:36:18.2458跟蹤開幕 C:\日誌/ NLogTest/2013與 concurrentWrite =假
這是非常奇怪的/April/log-130401-Info.log,因爲concurrentWrites默認值是true
,而且我已經設置在配置此值。
如果你在單線程中而不是並行性中嘗試它有什麼不同?沒關係,你已經寫好了。 – CSharpie
單線程沒有區別 - 當文件獲得1MB大小時,它不再附加到它。 – Boo