Log4net does not register ThreadContext

I have log4net running on my AsP.NET site. I can register messages in my database table, but it does not register ThreadContext properties. For example:

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

My log4net.config adds these values ​​as parameters to the SQL DB table:

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

As I debug, I see that these ThreadContext properties are set, but they do not get into the database.

How can I make this work?

+5
source share
2 answers

So, it turns out the config is to blame. This was a bit wrong:

Original:

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

Modified by:

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

I had to take out "log4net:" inside the property.

, - log4net: propertyName. , , , !

+8

log4net verbose/debug/show sql, , ? , , , ?

0

All Articles