好的,现在我知道如何编写自定义 layoutRender
在启动时注册自定义layoutRenderer
ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("application", typeof(MyLayoutRenderer));
当然,我从config
中读取了值protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
var product = CommonMethods.ReadConfig("product");
builder.Append(product);
}
如何动态设置值?
答案 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有用。