Я пытаюсь использовать источник событий (Microsoft.Diagnostics.EventFlow.Inputs.EventSource) для создания события, которое обрабатывается потоком событий (Microsoft.Diagnostic.EventFlow) и чьи выходные данные передаются в Application Insights (Microsoft.Diagnostics.EventFlow). .Outputs.ApplicationInsights) для анализа.
Библиотека потока событий, по-видимому, требует, чтобы я передал полный объект System.Exception в поток событий, чтобы он был успешно классифицирован как событие исключения в Application Insights.
Вот фильтр, который я использую в Event Flow для моего исключения:
{
"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);
}`
Может ли кто-нибудь прояснить, как правильно это реализовать и как правильно передать объект System.Exception через поток событий и в Application Insights.
Огромное спасибо.