NLog变量无法解析

时间:2014-10-06 17:35:49

标签: c# .net variables nlog

我正在尝试在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}}"

有没有办法逃避这种情况,以便正确评估?

0 个答案:

没有答案