6

AsP.NET サイトで log4net を実行しています。メッセージを DB テーブルに記録できますが、ThreadContext プロパティが記録されません。例えば:

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

私の 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>

デバッグすると、これらの ThreadContext プロパティが設定されていることがわかりますが、DB には入っていません。

どうすればそれを機能させることができますか?

4

2 に答える 2

10

したがって、構成が原因であることがわかりました。少し間違っていました:

オリジナル:

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

かわった:

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

プロパティ内の「log4net:」を取り出す必要がありました。

奇妙なことに、log4net:propertyName が必要なプロパティが 1 つあります。なぜこのように機能するのかまったくわかりませんが、それが機能した修正です!

于 2008-10-09T19:08:30.643 に答える
0

log4net verbose / debug / show sqlをオンにして、そのレベルで何が行われているかを確認できますか?それをすべて結び付けるために必要な構成の別のビットがおそらくありますか?

于 2008-10-09T14:09:41.167 に答える