2014-05-08 69 views
1

我添加的屬性分爲如何訪問AdoNetAppender的log4net自定義屬性?

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" /> 

感謝

回答

1

不,它不是由log4net的支持。

如果你看一下在PropertyPatternConverter代碼,你看它調用PatternConverter class,然後只存儲在屬性對象上調用ToStringWriteObject

這也不容易實現,因爲你必須有代碼來提取屬性名稱,然後使用反射來提取值。因爲只需將對象屬性的值存儲在LogicalThreadContext.Properties中就可以實現同樣的效果,這是不值得的。