로깅 시스템을 사용하여 대형 웹 응용 프로그램을 추적하고 싶습니다. 지금까지 NLog에 정착했습니다. 구성 및 API가 용이하기 때문입니다.여러 개의 NLog 이벤트를 하나의 ASP.NET 요청에 연결하십시오.
추적을 사용할 수있게되면 다양한 사용자에 대해 많은 로깅이 발생할 것으로 예상됩니다. 개별 로그 라인을 단일 요청과 연관시키는 방법이 있습니까?
로깅 시스템을 사용하여 대형 웹 응용 프로그램을 추적하고 싶습니다. 지금까지 NLog에 정착했습니다. 구성 및 API가 용이하기 때문입니다.여러 개의 NLog 이벤트를 하나의 ASP.NET 요청에 연결하십시오.
추적을 사용할 수있게되면 다양한 사용자에 대해 많은 로깅이 발생할 것으로 예상됩니다. 개별 로그 라인을 단일 요청과 연관시키는 방법이 있습니까?
요청한 후 답변을 찾았습니다.
각 요청 ASP.NET의 새로운 스레드에 의해 처리된다 그러므로 트릭 고유 이름으로 현재 스레드를 표시한다 :
HttpRequest request = HttpContext.Current.Request;
Thread.CurrentThread.Name = Guid.NewGuid().ToString() + request.UserHostAddress;
이 정보는 ${threadname}
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 문제".
로 NLog 읽을 수 죄송합니다. 약간 너무 일반적입니다. 'NLog.Extended'를 사용하는 것은 실제로 문서화되지 않았지만 현재의 모든'$ {aspnet ..} '는 요청을 구별 할 수 없습니다. – vdboor
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) –
+1 좋은 답변입니다. 내가 말했듯이, 나는 어떤 Asp.Net 개발도하지 않았으므로 현재 요청을 반영하도록 스레드 이름을 설정하지 않았다. ManagedDiagnosticContext 또는 GlobalDiagnosticContext와 같은 중간 위치로 먼저 전송하지 않고 HttpContext에서 정보를 로깅하려는 경우에는 사용자 정의 LayoutRenderer를 작성하는 것이 매우 쉽습니다. – wageoghe
@wageoghe 지원에 감사 드리며 레이아웃 관리에 대한 도움말입니다. 그것을 들여다 보게됩니다. :) – vdboor