【问题标题】:NLog FileTarget delays LogEventInfoNLog FileTarget 延迟 LogEventInfo
【发布时间】:2021-06-08 18:29:25
【问题描述】:

代码

LogEventInfo theEvent               = new LogEventInfo();
Logger offsetLogger                 = LogManager.GetLogger("ProdDataLog");
theEvent.Properties["Range"]        = calc.Range;
offsetLogger.Log(theEvent);

下面是目标

<target name="ProdDataFile" xsi:type = "File"
    fileName="${prodDataDir}ProdFile.csv"
    archiveFileName="${prodDataDir}Archive/ProdFile.{#}.csv"
    archiveNumbering="DateAndSequence"
    archiveAboveSize="500000" archiveEvery="Day" maxArchiveFiles="30"
    archiveDateFormat="yyyyMMdd">
      <layout xsi:type="CsvLayout" delimiter="Comma" withHeader="true" quoting="Nothing">
        <column name="Date"           layout="${date:format=yyyy-MM-dd}" />
        <column name="Time"           layout="${time:HH:mm:ss.ffff}" />
        <column name="Range"          layout="${event-properties:Range}" />
      </layout>
</target>

规则

   <logger name="ProdDataLog"  writeTo="ProdDataFile"   final="true" />   

问题在于功能

offsetLogger.Log(theEvent);

最多可能需要 200-300 毫秒。

普通日志没有延迟......但正在尝试创建一个 csv 日志。

有什么想法吗? 我尝试将“异步”添加到目标,但根本没有写入 csv。

【问题讨论】:

    标签: c# nlog


    【解决方案1】:

    NLog FileTarget 默认使用KeepFileOpen=false,因为它可以跨平台工作,并且可以与大多数文件查看器/监视器一起使用。但是性能很差。

    尝试像这样添加KeepFileOpen="true"

    <target name="ProdDataFile" xsi:type = "File"
       keepFileOpen="true"
       fileName="${prodDataDir}ProdFile.csv"
       archiveFileName="${prodDataDir}Archive/ProdFile.{#}.csv"
       archiveNumbering="DateAndSequence"
       archiveAboveSize="500000" archiveEvery="Day" maxArchiveFiles="30"
       archiveDateFormat="yyyyMMdd">
      <layout xsi:type="CsvLayout" delimiter="Comma" withHeader="true" quoting="Nothing">
        <column name="Date"           layout="${date:format=yyyy-MM-dd}" />
        <column name="Time"           layout="${time:HH:mm:ss.ffff}" />
        <column name="Range"          layout="${event-properties:Range}" />
      </layout>
    </target>
    

    您可以使用&lt;targets async="true"&gt; 替代方案(如果有多个线程写入同一个文件目标,则推荐使用)。另见:https://github.com/NLog/NLog/wiki/Performance#file-logging-performanceRemember to Flush

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多