将值传递给NLog自定义LayoutRenderer

时间:2012-02-29 09:21:16

标签: c# logging nlog

好的,现在我知道如何编写自定义 layoutRender

  1. 在课堂上写一个 MylayoutRender 继承 LayoutRenderer
  2. 覆盖附加方法
  3. 在启动时注册自定义layoutRenderer

    ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("application", typeof(MyLayoutRenderer));

  4. 当然,我从config

    中读取了值
    protected override void Append(StringBuilder builder, LogEventInfo logEvent)
        {
            var product = CommonMethods.ReadConfig("product");
            builder.Append(product); 
        }
    

    如何动态设置值?

1 个答案:

答案 0 :(得分:3)

此答案包含一个LayoutRenderer示例,它允许您配置一个参数,说明要读取的配置值。

NLog config file to get configuration setting values from a web.config

根据@DaveHogan发布的内容,如果您编写了自己的LayoutRenderer并将其命名为MyLayoutRenderer并想要记录“product”值,则可以将其配置为:

${MyLayoutRenderer:product}

键是[DefaultParameter]属性,用于装饰LayoutRenderer的属性,指示从配置中读取哪个属性。

这个question(来自我)显示了一个创建NLog LayoutRenderer的示例,它接受一个参数,然后将该参数用作查找的键。 (问题的主题是log4net,但我发布了一个我可以在NLog中做的事情的例子,并想要一个答案显示如何在log4net中做类似的事情)。请注意,该示例适用于NLog 1.1。它在NLog 2.0中会略有不同。

您可能还会发现this link to the NLog code repository有用。