2016-09-15 45 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爲空(您可以通過在您正在執行的lambda調用中添加一個斷點來驗證第二個日誌並檢查當時的http上下文是什麼,我打賭這個請求已經過去了。)

跨地點id的相關性一般從HttpContext獲得操作信息,所以如果沒有設置當消息被記錄異步時,它就不可用。

我不確定是否有任何簡單方法來解決這只是與日誌記錄適配器,但是,如果你想保持異步日誌的方式,你這樣做。