我想在nlog中定义2个目标(通常是Devops和UDP上的文件目标),然后根据位置动态选择它们。这样做的动机是在本地运行和在Devops上运行时使用不同的目标。
关于如何使用C#代码执行此操作的文章很多,但我想知道是否有可能直接在配置文件中执行此操作。
在伪代码中,我正在规则部分中寻找类似的内容:
<rules>
if(Env==DEVOPS)
<logger name="*" minlevel="Info" writeTo="file" />
else
<logger name="*" minlevel="Trace" writeTo="udp" />
end
</rules>
我建议您使用此处描述的方法:
<nlog>
<variable name="myFileLevel" value="Off" />
<variable name="myUdpLevel" value="Off" />
<rules>
<logger name="*" minLevel="${var:myFileLevel}" writeTo="file" />
<logger name="*" minLevel="${var:myUdpLevel}" writeTo="udp" />
</rules>
</nlog>
然后在运行时执行此操作:
if (DevOps)
{
LogManager.Configuration.Variables["myFileLevel"] = "Debug";
}
else
{
LogManager.Configuration.Variables["myUdpLevel"] = "Trace";
}
LogManager.ReconfigExistingLoggers();
另请参阅:https : //github.com/nlog/NLog/wiki/Filtering-log-messages#semi-dynamic-routing-rules
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句