2010-12-16 8 views
1

Ich möchte ein Protokollierungssystem verwenden, um eine große Webanwendung zu verfolgen. Bisher habe ich mich für NLog entschieden, weil es einfach zu konfigurieren und zu bedienen ist.Mehrere NLog-Ereignisse mit einer einzigen ASP.NET-Anforderung verknüpfen

Wenn die Ablaufverfolgung aktiviert ist, erwarte ich eine Menge Protokollierung für verschiedene Benutzer. Gibt es eine Möglichkeit, die einzelnen Protokollzeilen einer einzelnen Anforderung zuzuordnen?

Antwort

1

Die Antwort gefunden, nachdem Sie danach gefragt haben.

Jede Anforderung von einem neuen Thread in ASP.NET behandelt wird, daher ist der Trick, den aktuellen Thread mit einem eindeutigen Namen Kennzeichnung:

HttpRequest request = HttpContext.Current.Request; 
Thread.CurrentThread.Name = Guid.NewGuid().ToString() + request.UserHostAddress; 

dazu von NLog als ${threadname}

+1

+1 Das ist eine gute Antwort. Wie gesagt, ich habe noch keine Asp.Net-Entwicklung gemacht, daher kam es mir nicht in den Sinn, den Thread-Namen so zu setzen, dass er die aktuelle Anfrage widerspiegelt. Beachten Sie, dass es sehr einfach ist, einen eigenen benutzerdefinierten LayoutRenderer zu schreiben, wenn Sie Informationen aus dem HttpContext protokollieren möchten, ohne sie zuvor an einen Zwischenspeicherort (wie ManagedDiagnosticContext oder GlobalDiagnosticContext) zu übertragen. – wageoghe

+0

@wageoghe danke für die Unterstützung und Tipp über Layout-Management. Es macht Sinn, das zu untersuchen. :) – vdboor

0

Es gibt mehrere LayoutRenderer, die ASP-Informationen ausgeben (ich habe nicht für ASP.NET entwickelt, daher kann ich nicht sagen, welche (wenn überhaupt) Ihnen das geben würde, was Sie brauchen). Siehe diesen Link für eine Liste von LayoutRenderers:

http://nlog-project.org/wiki/Layout_renderers

Vom NLog Forum (an derselben Stelle) ich, dass einige Leute ein Problem sehen mußten den ASP.NET LayoutRenders ausgibt etwas bekommen (zumindest in NLog 2.0). Die empfohlene Lösung so weit (es sollte während Beta-Phase festgelegt wird) ist dies zu Ihrer NLog.config Datei hinzuzufügen:

<extensions> 
    <add assembly="NLog.Extended" /> 
</extensions> 

Sicherzustellen, dass NLog.Extended.dll im selben Verzeichnis wie NLog.dll

Ich kann keinen Link zu dem bestimmten Beitrag im Forum veröffentlichen, da dieses Forum keine Links zu einzelnen Posts bietet, sondern als Antwort auf eine Frage vom 28. Oktober 2010. Der Titel der Frage lautet: "Problem mit NLOG und ASP.NET".

+0

gelesen werden Entschuldigung, das ist ein bisschen zu allgemein. Die Verwendung von 'NLog.Extended' ist in der Tat ein wenig undokumentiert, aber alle aktuellen' $ {aspnet ..} 'erlauben keine Unterscheidung zwischen Anfragen. – vdboor

+0

Die Add-Assembly-Konfiguration wird in der Release-Version von NLog 2 nicht mehr benötigt. [Http://nlog-project.org/2011/04/14/simplifying-nlog-extended-dll-usage.html](http:/ /nlog-project.org/2011/04/14/simplifying-nlog-extended-dll-usage.html) –

Verwandte Themen