我對使用異步目標時在NLog中的時間戳感到好奇。NLog異步目標時間戳
我知道根據this question,當日志條目排隊時,會生成時間戳,就像您期望的那樣。
但是,我注意到我的日誌文件中有一些東西,所以我決定快速進行測試。
static void Main(string[] args)
{
for (int i = 0; i < 10000; i++)
{
_logger.Info("Timestamp: {0}, LogNumber: {1}",DateTime.Now.ToString("HH:mm:ss.fff"), i);
}
_logger.Factory.Flush();
}
我NLog.config樣子:
<?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">
<targets async="true">
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="f" />
</rules>
</nlog>
現在,如果我查看輸出,我們看到754 9962之間,所有條目具有相同NLOG時間戳,但是,DateTime.Now顯示毫秒進展:
2015-02-12 08:19:23.3814 INFO Timestamp: 08:19:23.376, LogNumber: 0
...
2015-02-12 08:19:23.3853 INFO Timestamp: 08:19:23.384, LogNumber: 754
...
2015-02-12 08:19:23.4033 INFO Timestamp: 08:19:23.399, LogNumber: 9963
...
我可以理解,隨着費用的0.384一個DateTime.Now郵票可以被記錄的0.385,但是,它沒有任何意義,我認爲0.399出來爲.385。
NLog時間戳進展的方式幾乎看起來像是在記錄週期期間生成的timstamp,而不是日誌調用。這將違背上述文章。
那麼,這是否與NLog使用的時間源有關,或者更確切地說,是何時生成時間戳?