2016-09-15 2 views
0

내 ASP.NET MVC 애플리케이션에 NLog가 구성되어 Application Insights로 리디렉션되도록 구성되었습니다. 다음과 같은 의사 코드가 부여됩니다.Microsoft.ApplicationInsights.NLogTarget은 비동기 작업과 상관 관계가 없습니다.

var logger = // resolve NLog logger 
logger.Log(Level.Info, "SYNC MESSAGE"); 
Task.Run(() => logger.Log(Level.Info, "ASYNC MESSAGE")); 

두 항목 모두 Application Insights 로그에 나타나지만 두 번째 항목은 요청과 상관 관계가 없습니다. 어떻게 수정해야합니까?

답변

0

비동기 메시지에 작업 ID/etc가 설정되어 있지 않으면 로그 호출이 발생했을 때 HttpContext.Current이 null 인 것입니다. (아마도 람다 호출에 중단 점을 넣음으로써 확인할 수 있습니다. 그 두 번째 로그를 확인하고 그 시점에서 http 컨텍스트가 무엇인지 확인하면 요청이 오래전에 걸려있는 것입니다.)

장소 간 ID 상관 관계는 일반적으로 HttpContext에서 작업 정보를 얻습니다. 메시지가 비동기 적으로 기록되면 사용할 수 없습니다.

로깅 어댑터와 함께이 문제를 해결할 수있는 방법이 있는지 잘 모르겠지만, 비동기 로깅을 계속하고 싶다면 로깅 어댑터를 사용해야합니다.

관련 문제