2017-03-02 34 views
1

我試圖將跟蹤或異常數據放到應用程序見解中。我想下面的代碼:如何從Console C#應用程序獲取跟蹤/異常數據到應用程序見解

TelemetryClient tc = new TelemetryClient(); 
tc.InstrumentationKey = "xxxxxx-xxxxxxx-xxxxxxxx-xxxxxxx"; 
var traceTelemetry = new TraceTelemetry("Console trace critical", SeverityLevel.Critical); 
tc.TrackTrace(traceTelemetry); 
tc.TrackException(new ApplicationException("Test for AI")); 
tc.Flush(); 

但它不工作,我無法找到這樣的痕跡或異常的應用分析信息中心,搜索或公制探險。

回答

1

我會嘗試現有的處理(沖洗後)之前加入5秒睡眠 - IIRC刷新僅刷新本地緩存,並不會強制遙測發送到應用洞察

0

事件/消息在App Insights中可見需要長達一小時的時間。我想你必須要稍微耐心一點才能顯示信息。

+0

我認爲,情況並非如此,因爲它已經通過了一個小時。我也嘗試使用EventFlow + Trace + Application Insights發送跟蹤,並花了大約一分鐘的時間來獲取跟蹤... –

1

它看起來像TC。沖洗是不夠的。我在控制檯應用程序中嘗試了您的代碼,並未在提琴手中看到請求。當添加Thread.Sleep(5000)時,異常出現。

class Program 
{ 
    static void Main(string[] args) 
    { 
     TelemetryClient tc = new TelemetryClient(); 
     tc.InstrumentationKey = "fe549116-0099-49fe-a3d6-f36b3dd20860"; 
     var traceTelemetry = new TraceTelemetry("Console trace critical", SeverityLevel.Critical); 
     tc.TrackTrace(traceTelemetry); 
     tc.TrackException(new ApplicationException("Test for AI")); 
     tc.Flush(); 

     // Without this line Fiddler didn't show a request 
     Thread.Sleep(5000); 
    } 
} 

我能夠在「故障」屏幕中看到異常。

enter image description here

+0

是的,這就是原因。然而@Erang在一個小時前回答說...... –

0

我想你可能要使用InMemoryChannel如果添加AI到控制檯/桌面/工作者應用並想Flush synchronously

InMemoryChannel在發送遙測信號之前不在本地存儲數據,因此如果線路發生任何事情,就不會保護數據丟失。但是,當您撥打Flush()時,它實際上會嘗試發送遙測信號,而不是將其保存到磁盤。

使用InMemoryChannel將有助於防止容易出錯的代碼,如添加Sleep()ServerTelemetryChannel發送一些時間來發送本地存儲的遙測項目。

你需要通過代碼或ApplicationInsights.coinfig文件替換ServerTelemetryChannel

<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel"> 
相關問題