将值传递给NLog自定义LayoutRenderer

本文关键字:自定义 LayoutRenderer NLog 值传 | 更新日期: 2023-09-27 18:26:10

好了,现在我知道如何编写自定义布局渲染

  1. 编写一个类MylayoutRender继承LayoutRenderer,在类中
  2. overrideAppend方法
  3. 在启动时注册自定义布局呈现器

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

目前,我从配置中读取了值

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

如何动态设置值?

将值传递给NLog自定义LayoutRenderer

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

从web.config 获取配置设置值的NLog配置文件

根据@DaveHogan发布的内容,如果你编写了自己的LayoutRenderer,并将其称为MyLayoutRenderer,并想记录"产品"值,你可以这样配置它:

${MyLayoutRenderer:product}

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

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

您可能还发现这个指向NLog代码存储库的链接非常有用。