c# NLog 如何只获取一个以 longdate 作为文件名的日志文件
c# NLog how to get only one logfile with the longdate as filename
您好,我正在使用我的控制台应用程序 NLog 进行日志记录。
话虽如此,我想使用 NLog 来记录控制台中发生的所有事情,以进行设置我正在使用 NLOG.config:
<target name="FullCSVFile" xsi:type="File" fileName="logs\internal_${date:format=yyyyMMdd_HHmmss}.log" keepFileOpen="true">
<layout xsi:type="CsvLayout">
<column name="Console" layout="${message}" />
<column name="Error" layout="${exception:format=ToString}" />
</layout>
</target>
<logger minlevel="Debug" name="*" writeTo="FullCSVFile" />
但是通过这种方式,该工具每秒在控制台中传递一个新文件,但我想在该工具以该时间戳开始时创建一个文件,并将所有内容写入该文件。我该怎么做?
这样的东西可以工作,但我还没有测试过:
<variable name="started" value="${date:format=yyyyMMdd_HHmmss}"/>
<target name="FullCSVFile" xsi:type="File" fileName="logs\internal_${started}.log" keepFileOpen="true">
<layout xsi:type="CsvLayout">
<column name="Console" layout="${message}" />
<column name="Error" layout="${exception:format=ToString}" />
</layout>
</target>
这个想法类似于文档中的示例:https://github.com/nlog/nlog/wiki/Configuration-file#variables
诀窍是像这样使用环境 属性 cached=true
:
<target name="FullCSVFile" xsi:type="File" fileName="logs\internal_${date:format=yyyyMMdd_HHmmss:cached=true}.log" keepFileOpen="true">
<layout xsi:type="CsvLayout">
<column name="Console" layout="${message}" />
<column name="Error" layout="${exception:format=ToString}" />
</layout>
</target>
它将使布局渲染一次,然后 return 相同的缓存值。
另请参阅:https://github.com/nlog/NLog/wiki/Cached-Layout-Renderer
为了使其“完美”,您可以使用${processinfo:StartTime:format=yyyyMMdd_HHmmss:cached=true}
,这样即使在重新加载 NLog-config 后时间戳也会保持稳定。
您好,我正在使用我的控制台应用程序 NLog 进行日志记录。 话虽如此,我想使用 NLog 来记录控制台中发生的所有事情,以进行设置我正在使用 NLOG.config:
<target name="FullCSVFile" xsi:type="File" fileName="logs\internal_${date:format=yyyyMMdd_HHmmss}.log" keepFileOpen="true">
<layout xsi:type="CsvLayout">
<column name="Console" layout="${message}" />
<column name="Error" layout="${exception:format=ToString}" />
</layout>
</target>
<logger minlevel="Debug" name="*" writeTo="FullCSVFile" />
但是通过这种方式,该工具每秒在控制台中传递一个新文件,但我想在该工具以该时间戳开始时创建一个文件,并将所有内容写入该文件。我该怎么做?
这样的东西可以工作,但我还没有测试过:
<variable name="started" value="${date:format=yyyyMMdd_HHmmss}"/>
<target name="FullCSVFile" xsi:type="File" fileName="logs\internal_${started}.log" keepFileOpen="true">
<layout xsi:type="CsvLayout">
<column name="Console" layout="${message}" />
<column name="Error" layout="${exception:format=ToString}" />
</layout>
</target>
这个想法类似于文档中的示例:https://github.com/nlog/nlog/wiki/Configuration-file#variables
诀窍是像这样使用环境 属性 cached=true
:
<target name="FullCSVFile" xsi:type="File" fileName="logs\internal_${date:format=yyyyMMdd_HHmmss:cached=true}.log" keepFileOpen="true">
<layout xsi:type="CsvLayout">
<column name="Console" layout="${message}" />
<column name="Error" layout="${exception:format=ToString}" />
</layout>
</target>
它将使布局渲染一次,然后 return 相同的缓存值。
另请参阅:https://github.com/nlog/NLog/wiki/Cached-Layout-Renderer
为了使其“完美”,您可以使用${processinfo:StartTime:format=yyyyMMdd_HHmmss:cached=true}
,这样即使在重新加载 NLog-config 后时间戳也会保持稳定。