在我的应用程序中,我每天处理数千个文档。在某些情况下,我需要一些日志,每个文档一个日志。然后我想在运行时针对特定目标更改输出文件名(仅更改文件名)。
在网上,我找到了如何通过编程创建目标的方法,但我只想通过编程更新文件名。我尝试了下面的代码。我收到的错误是“LayoutRender无法找到'logDirectory'。
有什么想法吗?
谢谢,
var target = (FileTarget)LogManager.Configuration.FindTargetByName("logfile");
target.FileName = "${logDirectory}/file2.txt";
LoggingConfiguration config = new LoggingConfiguration();
var asyncFileTarget = new AsyncTargetWrapper(target);
config.AddTarget("logfile", asyncFileTarget);
LogManager.Configuration = config;
配置文件是:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="logDirectory" value="C:/MyLogs"/>
<targets>
<target name="logfile" xsi:type="File" layout="${date:format=dd/MM/yyyy HH\:mm\:ss.fff}|${level}|${stacktrace}|${message}" fileName="${logDirectory}/file.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>