我正在尝试使用事件源 (Microsoft.Diagnostics.EventFlow.Inputs.EventSource) 创建由事件流 (Microsoft.Diagnostic.EventFlow) 处理的事件,并将其输出传递给 Application Insights (Microsoft.Diagnostics.EventFlow) .Outputs.ApplicationInsights)进行分析。
事件流库似乎要求我将完整的 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);
}`
任何人都可以清楚地说明实现这一点的正确方法以及通过事件流和 Onto Application Insights 传递 System.Exception 对象的正确方法是什么。
非常感谢。