2008-10-09 18 views
5

Tengo log4net ejecutándose en mi sitio AsP.NET. Puedo registrar mensajes en mi tabla de base de datos, pero no está registrando las propiedades de ThreadContext. Por ejemplo:log4net no inicia sesión ThreadContext

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

Mi log4net.config añade esos valores como parámetros en mi tabla de base de datos 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> 

Como puedo depurar, veo que esos ThreadContext propiedades se están creando, pero aren' t entrar en la base de datos.

¿Cómo puedo conseguir que funcione?

Respuesta

8

Por lo tanto, resulta que la culpa la tuvo la configuración. Era un poco mal:

original:

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

modificado: Se

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

tuve que sacar la "log4net:" dentro de la propiedad.

Lo curioso es que una propiedad todavía requiere log4net: propertyName. No tengo ni idea de por qué funciona de esta manera, pero esa fue la solución que funcionó.

+0

ninguno de esos funciona para mí. desconcertante, porque esta funciona% propiedad {log4net: HostName} –

0

¿Puedes encender log4net verbose/debug/show sql para ver qué está haciendo en ese nivel? ¿Hay quizás otra configuración que sea necesaria para unir todo?

Cuestiones relacionadas