我在我的AsP.NET站点上运行了log4net.我能够将消息记录到我的数据库表,但它没有记录ThreadContext属性.例如:
ThreadContext.Properties["Url"] = HttpContext.Current.Request.Url.ToString();
ThreadContext.Properties["HttpReferer"] = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"];
Run Code Online (Sandbox Code Playgroud)
我的log4net.config将这些值作为参数添加到我的SQL DB表中:
<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>
Run Code Online (Sandbox Code Playgroud)
在调试时,我看到正在设置那些ThreadContext属性,但它们没有进入数据库.
我怎么能让它工作?
所以,事实证明配置是罪魁祸首.这有点不对劲:
原版的:
<conversionPattern value="%property{log4net:HttpReferer}"/>
Run Code Online (Sandbox Code Playgroud)
更改:
<conversionPattern value="%property{HttpReferer}"/>
Run Code Online (Sandbox Code Playgroud)
我不得不取出房产内的"log4net:".
奇怪的是,一个属性仍然需要log4net:propertyName.我完全不知道它为什么会这样工作,但那是有效的解决方案!
归档时间: |
|
查看次数: |
3751 次 |
最近记录: |