2008-10-09 42 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来看看它在那个级别上做了什么?是否还有另外一些配置需要将它们结合在一起?