2009-08-27 20 views

Respuesta

16

En Application_BeginRequest, hacen

MDC.Set("addr", Request.UserHostAddress); 

y luego asegurarse de que su PatternLayout contiene %X{addr} algún lugar de la cadena de patrón.

Actualización: Como Tadas ha señalado, en las versiones más recientes de log4net es el equivalente

ThreadContext.Properties["addr"] = Request.UserHostAddress; 

junto con %P{addr} en la cadena de patrón.

+1

¡Estupendo! Gracias. Solo quiero señalar que la clase MDC está en desuso (http://svn.apache.org/repos/asf/logging/site/trunk/docs/log4net/release/sdk/log4net.MDC.html) y reenvía a ThreadContext. Propiedades –

+0

Bueno, ya había hecho esto en una vida anterior, pero había olvidado cómo. +1 –

+0

Tenga cuidado con la función 'agilidad de hilos' de asp.net: anula los contextos de log4net. Ver [este blog] (http://piers7.blogspot.com/2005/12/log4net-context-problems-with-aspnet.html) y [esta respuesta] (http://stackoverflow.com/a/9000825/ 1178314) en otra pregunta para más detalles. –

19

Con log4net 1.2.11 (oct 2011) se agrega lo siguiente a su diseño patrón:

%aspnet-request{REMOTE_ADDR} 

O para el usuario actual:

%aspnet-request{AUTH_USER} 

Ver https://issues.apache.org/jira/browse/LOG4NET-87 para obtener más información sobre la nueva Convertidores de patrones asp.net (% aspnet-cache,% aspnet-context y% aspnet-request).

+0

En cuanto a los comentarios de jira, parece que no admite apéndices con búfer como AdoNetAppender, cuando el tamaño del búfer es mayor que 1. ¿Los ha utilizado con dichos appenders? –

Cuestiones relacionadas