2009-08-27 7 views

Antwort

16

In Application_BeginRequest, tun

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

und dann sicherzustellen, dass Ihre PatternLayout%X{addr} irgendwo in der Musterzeichenfolge enthält.

Update: Tadas Wie gezeigt hat, in neueren Versionen von log4net das Äquivalent

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

gekoppelt mit %P{addr} in der Musterkette.

+1

Großartig! Vielen Dank. Ich möchte nur darauf hinweisen, dass die MDC-Klasse veraltet ist (http://svn.apache.org/repos/asf/logging/site/trunk/docs/log4net/release/sdk/log4net.MDC.html) und an ThreadContext weiterleitet. Eigenschaften. –

+0

Schön - ich hatte das in einem früheren Leben gemacht, aber vergessen wie. +1 –

+0

Vorsicht vor asp.net 'Thread Agility' Feature: es besiegt log4net Kontexte. Siehe [dieses Blog] (http://piers7.blogspot.com/2005/12/log4net-context-problems-with-aspnet.html) und [diese Antwort] (http://stackoverflow.com/a/9000825/ 1178314) auf eine andere Frage für weitere Details. –

19

Mit log4net 1.2.11 (Okt 2011) Sie folgende zu Ihrem Muster-Layout hinzufügen:

%aspnet-request{REMOTE_ADDR} 

Oder für den aktuellen Benutzer:

%aspnet-request{AUTH_USER} 

https://issues.apache.org/jira/browse/LOG4NET-87 auf dem neuen für weitere Informationen anzeigen asp.net-Musterkonverter (% aspnet-cache,% aspnet-context und% aspnet-request).

+0

Sieht man sich die Jira-Kommentare an, sieht es so aus, als ob die Unterstützung von gepufferten Appendern wie AdoNetAppender fehlt, wenn die Puffergröße größer als 1 ist. Haben Sie sie mit solchen Appendern verwendet? –

Verwandte Themen