我正在尝试在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"
internalLogToConsole="true" internalLogLevel="Debug" throwExceptions="true"
>
<extensions><add prefix="my" assembly="Extensions"/></extensions>
<variable name="test" value="${date}"/>
然后我尝试在自定义目标的自定义布局中使用该变量(它将传递给名为Context
的属性):
<target xsi:type="my.CustomTarget" name="custom" layout="${my.CustomLayout:Context=${test}}"/>
但是,这不起作用。当我单步执行自定义布局的代码时Context
设置为此字符串:${date
。 (是的,结束括号丢失)。
自定义LayoutRenderer:
[LayoutRenderer("CustomLayout")]
[ThreadAgnostic]
public sealed class CustomLayoutRenderer : LayoutRenderer
{
public String Context {get; set;}
protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
Debug.WriteLine(Context);
}
}
这是一个错误吗?有谁知道可能导致它的原因或如何解决它?
编辑:
我认为问题出在嵌套替换中:
layout="${my.CustomLayout:Context=${test}}"
有没有办法逃避这种情况,以便正确评估?