我想知道如何检查NLog.config文件中deviceId变量的值。现在,C#代码中的deviceId变量和NLog.config文件中的deviceId变量是两个不同的实体,但它们应该是同一个变量。
С# 代码:
static void Main(string[] args)
{
Logger log = LogManager.GetCurrentClassLogger();
// log only Message 2
//int res;
//res = Sum(2, 5);
//log.Debug($"{res}");
int deviceId;
deviceId = 1;
//log.Debug("Message " + $"{deviceId}");
log.Debug("");
deviceId = 2;
//log.Debug("Message " + $"{deviceId}");
log.Debug("");
deviceId = 3;
//log.Debug("Message " + $"{deviceId}");
log.Debug("");
}
NLog.config代码:
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<variable name="myvar" value="myvalue"/>
<targets>
<target xsi:type="File" name="file" fileName="${basedir}/logs/${shortdate}.log" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file" />
<filters>
<when condition="'${deviceId}' == '2'" action="Log" />
</filters>
</rules>
</nlog>
代码怎么样:
LogManager.Configuration.Variables["deviceid"] = deviceid
并在配置中
<when condition=""equals(${deviceId}, '1')"" action="Log" />