我試圖使用事件源(Microsoft.Diagnostics.EventFlow.Inputs.EventSource)來創建一個由事件流(Microsoft.Diagnostic.EventFlow)處理的事件和其輸出傳遞給Application Insights(Microsoft.Diagnostics.EventFlow.Outputs.ApplicationInsights)進行分析。EventSource中使用System.Exception對象
事件流庫似乎要求我將完整的System.Exception對象傳遞給事件流,以便在Application Insights中將它成功分類爲異常事件。
這裏是我使用事件流爲我的異常過濾器:
{
"type": "metadata",
"metadata": "exception",
"include": "EventId == 21",
"exceptionProperty": "shark"
}
這裏是我的方法,我在哪裏目前產生的事件,我想與事件流處理。目前這確實出現在應用程序洞察中,但是我相信我在運行時在輸出窗口中看到下面的消息時實施得很差。
Event方法的參數與WriteEvent方法的參數不匹配。這可能會導致事件顯示不正確。
private const int TestExceptionEventId = 21;
[NonEvent]
public void TestException(string operationType, Exception ex)
{
string shark = ex.ToString();
TestException(operationType, shark);
WriteEvent(TestExceptionEventId, operationType, ex);
}
[Event(TestExceptionEventId, Level = EventLevel.Error, Message = "{0} - {1}, {2}", Keywords = Keywords.Exception)]
public void TestException(string operationType, string shark)
{
}
這裏就是記錄事件被觸發的方法:
//EXCEPTION
//id = 21
try
{
int value = 1/int.Parse("0");
}
catch (DivideByZeroException exception)
{
//id = 21
_eventSource.TestException("hello", exception);
}`
誰能提供正確的方法比較清楚實現這一點,什麼是通過一個系統的正確方法。通過事件流和在應用程序見解上的異常對象。
很多謝謝。