如何制作两个内部日期相同的不同NLog目标?



我在NLog中定义了以下两个目标。配置在我的ASP。. NET Core项目:

<targets>
<target name="MyApp" xsi:type="File"
fileName="${specialfolder:folder=ApplicationData}/MyApp/${date:format=yyyyMMdd_HHmmss:cached=true}_MyApp.log"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
deleteOldFileOnStartup="false"/>
<target name="MyAppAll" xsi:type="File"
fileName="${specialfolder:folder=ApplicationData}/MyApp/${date:format=yyyyMMdd_HHmmss:cached=true}_MyApp.log"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
deleteOldFileOnStartup="false"/>
</targets>

MyApp target记录应用程序中所有的日志,而MyAppAll也包括一些框架日志。

我试图让NLog创建两个具有相同时间戳的日志文件,但我观察到的是,MyAppAll将在应用程序启动时立即创建,因为这是时间框架日志开始,而MyApp只会在我向API发送请求时创建,结果是我有两个具有不同日期的文件。

对于如何解决这个问题有什么想法吗?

您可以使用${processinfo:StartTime}:

<targets>
<target name="MyApp" xsi:type="File"
fileName="${specialfolder:folder=ApplicationData}/MyApp/${processinfo:StartTime:format=yyyyMMdd_HHmmss:cached=true}_MyApp.log"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />
<target name="MyAppAll" xsi:type="File"
fileName="${specialfolder:folder=ApplicationData}/MyApp/${processinfo:StartTime:format=yyyyMMdd_HHmmss:cached=true}_MyApp.log"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />
</targets>

参见:https://github.com/NLog/NLog/wiki/ProcessInfo-Layout-Renderer

注意,不建议有两个文件目标共享相同的文件名。例如,在nlog5中,默认为KeepFileOpen=true,则其中一个将停止工作。

相关内容

  • 没有找到相关文章

最新更新