2009-08-27 18 views

risposta

16

In Application_BeginRequest, fanno

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

e quindi garantire che il vostro PatternLayout contiene %X{addr} da qualche parte nella stringa del modello.

Aggiornamento: Come Tadas ha sottolineato, nelle versioni più recenti di log4net l'equivalente è

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

accoppiato con %P{addr} nella stringa di modello.

+1

Grande! Grazie. Voglio solo notare che la classe MDC è deprecata (http://svn.apache.org/repos/asf/logging/site/trunk/docs/log4net/release/sdk/log4net.MDC.html) e inoltra a ThreadContext. Proprietà. –

+0

Bello - L'avevo fatto in una vita precedente, ma avevo dimenticato come. +1 –

+0

Attenzione alla caratteristica di 'thread agility' di asp.net: sconfigge i contesti di log4net. Vedi [questo blog] (http://piers7.blogspot.com/2005/12/log4net-context-problems-with-aspnet.html) e [questa risposta] (http://stackoverflow.com/a/9000825/ 1178314) su un'altra domanda per maggiori dettagli. –

19

Con log4net 1.2.11 (ott 2011) si aggiunge quanto segue al modello di layout:

%aspnet-request{REMOTE_ADDR} 

O per l'utente corrente:

%aspnet-request{AUTH_USER} 

Vedi https://issues.apache.org/jira/browse/LOG4NET-87 per maggiori informazioni sulla nuova convertitori di modelli asp.net (% aspnet-cache,% aspnet-context e% aspnet-request).

+0

Guardando i commenti di jira, sembra che manchi il supporto di appendici tamponati come AdoNetAppender, quando la dimensione del buffer è maggiore di 1. Li hai usati con tali appendici? –

Problemi correlati