2008-10-09 44 views
5

我有我的AsP.NET網站上運行的log4net。我可以將消息記錄到我的數據庫表中,但它不記錄ThreadContext屬性。例如:log4net not logging ThreadContext

ThreadContext.Properties["Url"] = HttpContext.Current.Request.Url.ToString(); 
ThreadContext.Properties["HttpReferer"] = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]; 

我log4net.config增加這些值作爲參數傳遞到我的SQL數據庫表:

<parameter> 
    <parameterName value="@URL"/> 
    <dbType value="String"/> 
    <size value="512"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%property{log4net:Url}"/> 
    </layout> 
</parameter> 
<parameter> 
    <parameterName value="@HttpReferer"/> 
    <dbType value="String"/> 
    <size value="512"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%property{log4net:HttpReferer}"/> 
    </layout> 
</parameter> 

當我調試,我看到那些ThreadContext屬性被設置,但他們不是活得不要進入數據庫。

我怎樣才能讓它工作?

回答

8

所以,事實證明,配置是責怪。這是稍有不妥:

原文:

<conversionPattern value="%property{log4net:HttpReferer}"/> 

更改:

<conversionPattern value="%property{HttpReferer}"/> 

我不得不採取了 「log4net的:」 財產內。

奇怪的是,一個屬性仍然需要log4net:propertyName。我完全不知道它爲什麼這樣工作,但這是修復工作!

+0

這些都不適合我。令人費解,因爲這一個工程%屬性{log4net:HostName} – 2014-08-07 19:28:40

0

你可以打開log4net verbose/debug/show sql來看看它在那個級別上做了什麼?是否還有另外一些配置需要將它們結合在一起?