我们说我有以下NLog配置:
<target name="logfile" xsi:type="File" fileName="${basedir}/Logs/nLog.csv" archiveAboveSize="50000000" archiveNumbering="Sequence" maxArchiveFiles="3">
<layout xsi:type="CsvLayout">
<column name="time" layout="${longdate}" />
<column name="level" layout="${level}"/>
<column name="message" layout="${message}" />
</layout>
</target>
这个配置已经使用了一段时间,现在我想添加另一个列,如下所示:
<layout xsi:type="CsvLayout">
<column name="time" layout="${longdate}" />
<column name="level" layout="${level}"/>
<column name="message" layout="${message}" />
<column name="codeLine" layout="${event-context:item=codeLine}" />
</layout>
问题:现有的* csv文件未正确更新(新列未添加到文件中)。我仍然可以登录到该文件,但新列将被忽略。 有没有办法让NLog自动更新文件?删除日志文件以便重新创建它不是一种选择。
答案 0 :(得分:0)
在这种情况下,您可以使用自定义变量。 更新配置文件以定义自定义变量
<variable name ="variable1" value =""/>
然后使用变量
更新布局渲染器。<target name="csv" xsi:type="File" filename="filename">
<layout xsi:type="CsvLayout" withheader="true">
<column name="Column1" layout="${var:variable1}" quoting="Nothing"/>
</layout>
</target>
您可以从C#客户端设置变量的值
LogManager.Configureation.Variables["externalDevice"] = "ValueOf_variable1";
您是否已看到与此关注有关的github Wiki链接varlayoutrenderer。