NLog - 存档开始/停止时间
NLog - Archive Start / Stop Time
刚开始使用 NLog 并运行具有以下配置:
<?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"
throwConfigExceptions="true">
<targets async="true">
<target name="logfile"
xsi:type="File"
layout="${longdate} [${level:uppercase=true}] (${threadid}) ${logger}: ${message} ${onexception:${newline}Exception\: ${exception:format=type,message,method,stacktrace:maxInnerExceptionLevel=5:innerFormat=shortType,message,method}}"
fileName="logs/current.log"
archiveFileName="logs/Archive/${ticks}.log"
archiveEvery="Minute"
archiveOldFileOnStartup="true"
keepFileOpen="false"
/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
一切都按预期进行。但是,我需要将旋转文件的格式设置为 ${archive_start_ticks}_${arhive_end_ticks}.log
而不是当前格式 ${archive_end_ticks}.log
.
我最初希望我可以将活动日志文件命名为 ${ticks},然后在存档时,将活动日志文件的名称用作存档文件中的参数以组成如下内容:
fileName="logs/${ticks}"
archiveFileName="logs/Archive/${fileName}_${ticks}.log"
当然,这里有两个问题:
- 对活动文件使用 ${ticks} 会为每个日志行创建一个新文件。
- 我似乎无法将原始文件名作为输入变量引用到 archiveFileName 中。
也就是说,实现此目标的最佳方法是什么?这是 NLog 可以在本地处理还是通过较小的扩展处理的东西?
更新以防万一有人关心:
我放弃了使用带有配置的 FileTarget 并编写了我自己的 Target 包装在 BufferedWrapper 中。在每次刷新时,我使用第一个和最后一个 LogEvents 来确定时间跨度,这为我提供了所需的文件格式,几乎没有自定义代码支持。
刚开始使用 NLog 并运行具有以下配置:
<?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"
throwConfigExceptions="true">
<targets async="true">
<target name="logfile"
xsi:type="File"
layout="${longdate} [${level:uppercase=true}] (${threadid}) ${logger}: ${message} ${onexception:${newline}Exception\: ${exception:format=type,message,method,stacktrace:maxInnerExceptionLevel=5:innerFormat=shortType,message,method}}"
fileName="logs/current.log"
archiveFileName="logs/Archive/${ticks}.log"
archiveEvery="Minute"
archiveOldFileOnStartup="true"
keepFileOpen="false"
/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
一切都按预期进行。但是,我需要将旋转文件的格式设置为 ${archive_start_ticks}_${arhive_end_ticks}.log
而不是当前格式 ${archive_end_ticks}.log
.
我最初希望我可以将活动日志文件命名为 ${ticks},然后在存档时,将活动日志文件的名称用作存档文件中的参数以组成如下内容:
fileName="logs/${ticks}"
archiveFileName="logs/Archive/${fileName}_${ticks}.log"
当然,这里有两个问题:
- 对活动文件使用 ${ticks} 会为每个日志行创建一个新文件。
- 我似乎无法将原始文件名作为输入变量引用到 archiveFileName 中。
也就是说,实现此目标的最佳方法是什么?这是 NLog 可以在本地处理还是通过较小的扩展处理的东西?
更新以防万一有人关心:
我放弃了使用带有配置的 FileTarget 并编写了我自己的 Target 包装在 BufferedWrapper 中。在每次刷新时,我使用第一个和最后一个 LogEvents 来确定时间跨度,这为我提供了所需的文件格式,几乎没有自定义代码支持。