2010-12-16 3 views
1

로깅 시스템을 사용하여 대형 웹 응용 프로그램을 추적하고 싶습니다. 지금까지 NLog에 정착했습니다. 구성 및 API가 용이하기 때문입니다.여러 개의 NLog 이벤트를 하나의 ASP.NET 요청에 연결하십시오.

추적을 사용할 수있게되면 다양한 사용자에 대해 많은 로깅이 발생할 것으로 예상됩니다. 개별 로그 라인을 단일 요청과 연관시키는 방법이 있습니까?

답변

1

요청한 후 답변을 찾았습니다.

각 요청 ASP.NET의 새로운 스레드에 의해 처리된다 그러므로 트릭 고유 이름으로 현재 스레드를 표시한다 :

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

이 정보는 ${threadname}

+1

+1 좋은 답변입니다. 내가 말했듯이, 나는 어떤 Asp.Net 개발도하지 않았으므로 현재 요청을 반영하도록 스레드 이름을 설정하지 않았다. ManagedDiagnosticContext 또는 GlobalDiagnosticContext와 같은 중간 위치로 먼저 전송하지 않고 HttpContext에서 정보를 로깅하려는 경우에는 사용자 정의 LayoutRenderer를 작성하는 것이 매우 쉽습니다. – wageoghe

+0

@wageoghe 지원에 감사 드리며 레이아웃 관리에 대한 도움말입니다. 그것을 들여다 보게됩니다. :) – vdboor

0

ASP 정보를 출력하는 LayoutRenderer가 여러 개 있습니다 (ASP.NET 용으로 개발되지 않아서 필요한 것을 제공 할 수 없다는 것을 말할 수는 없습니다). LayoutRenderers의 목록은이 링크를 참조하십시오 : 나는 적어도 (즉, 여러 사람이 출력 아무것도에 ASP.NET의 LayoutRenders을 받고 문제가 있었 볼 수 있습니다

(같은 사이트에서) NLog 포럼에서 http://nlog-project.org/wiki/Layout_renderers

NLog 2.0에서).

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

NLog.Extended.dll가 NLog.dll

같은 디렉토리에 있는지 확인 만들기 : 지금까지 (이 베타 단계에서 수정되어야합니다) 권장되는 솔루션은 NLog.config 파일에 이것을 추가하는 것입니다

해당 게시물이 개별 게시물에 대한 링크를 제공하지 않지만 2010 년 10 월 28 일에 요청 된 질문에 대한 응답으로 포럼의 특정 게시물에 대한 링크를 게시 할 수 없습니다. 질문 제목은 다음과 같습니다. "NLOG 및 ASP.NET 문제".

+0

로 NLog 읽을 수 죄송합니다. 약간 너무 일반적입니다. 'NLog.Extended'를 사용하는 것은 실제로 문서화되지 않았지만 현재의 모든'$ {aspnet ..} '는 요청을 구별 할 수 없습니다. – vdboor

+0

NLog 2의 릴리스 버전에서는 어셈블리 추가 구성이 더 이상 필요하지 않습니다. [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) –

관련 문제