C# 将值传递给NLog自定义布局渲染器
好的,现在我知道了如何编写自定义的layoutRenderC# 将值传递给NLog自定义布局渲染器,c#,logging,nlog,C#,Logging,Nlog,好的,现在我知道了如何编写自定义的layoutRender 在类中编写类MylayoutRender继承LayoutRender 重写追加方法 启动时注册自定义layoutRenderer ConfigurationItemFactory.Default.LayoutRenders.RegisterDefinition(“应用程序”,类型(MyLayoutRenderer)) 现在,我从配置中读取值 protected override void Append(StringBuilder bui
ConfigurationItemFactory.Default.LayoutRenders.RegisterDefinition(“应用程序”,类型(MyLayoutRenderer))代码>
protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
var product = CommonMethods.ReadConfig("product");
builder.Append(product);
}
如何动态设置值?此答案包含一个LayoutRenderer示例,该示例允许您配置一个参数,说明要读取哪个配置值 根据所发布的内容,如果您编写了自己的LayoutRenderer,并将其命名为MyLayoutRenderer,并希望记录“产品”值,那么您可以对其进行如下配置:
${MyLayoutRenderer:product}
键是装饰LayoutRenderer属性的[DefaultParameter]
属性,该属性指示要从配置中读取的属性
这(来自我)展示了一个创建NLog LayoutRenderer的示例,该NLog LayoutRenderer接受一个参数,然后将该参数用作查找的键。(问题的主题是log4net,但我发布了一个我可以在NLog中做的事情的示例,希望得到一个答案,说明如何在log4net中做类似的事情)。请注意,该示例适用于NLog 1.1。在NLog 2.0中会略有不同
您可能也会发现它很有用。看起来和我做的一样:从配置文件(CommonMethods.ReadConfig(“product”);)中读取数据。是否要执行其他操作?我阅读问题的方式是,我认为您可能希望能够配置LayoutRenderer,以便可以从配置文件中读取任何值。LayoutRenderer通过在NLog.config文件中将值名称指定为LayoutRenderer的参数来实现这一点。你还有别的东西要找吗?也许有更好的方法来做你想做的事。很抱歉回复晚了。我想做的是设置Append方法的值,但不给layoutRender提供参数。但由于我的自定义layoutRender(应用程序名)是一个常量,所以我只是在NLog.config中硬编码为sql insert。再次感谢你。