我正在添加属性
LogicalThreadContext.Properties["callContextId"] = "123456";
我的配置如下:
<parameter>
<parameterName value="@CallContextId" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{callContextId}" />
</layout>
</parameter>
这一切都有效......但我可以添加一个复杂的对象并访问其属性吗?例如
myObject.Id = "123456";
LogicalThreadContext.Properties["callContext"] = myObject;
我想做这样的事情......是否支持/可能?
<conversionPattern value="%property{callContext}.Id" />
由于
答案 0 :(得分:1)
不,log4net不支持。
如果您查看PropertyPatternConverter
中的代码,就会在PatternConverter
class中看到它调用WriteObject
,然后只会在属性中存储的对象上调用ToString
。
它也不容易实现,因为您必须使用代码来提取属性名称,然后使用反射来提取值。因为你可以通过在LogicalThreadContext.Properties
中存储对象属性的值来完成同样的事情,所以它是不值得的。