【发布时间】:2019-01-22 21:50:29
【问题描述】:
刚开始使用 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 可以原生处理还是通过小扩展处理?
【问题讨论】: