Microsoft.Diagnostics.EventFlow с Inputs.EventSource
Я пытаюсь использовать EventSource с Microsoft.Diagnostics.EventFlow и не могу вывести его на консоль. Вот пример, в котором он работает с Inputs.Trace, но не работает с Inputs.EventSource:
myEventFLowConfig.json:
{
"type": "EventSource",
"sources": [
{
"providerName": "MyCompanyEventSource"
}
],
"inputs":
[
{
"type": "EventSource",
"traceLevel": "Warning"
},
{
"type": "Trace",
"traceLevel": "Warning"
}
],
"outputs": [
{
"type": "StdOutput"
}
]
}
MyEventSource.cs
[EventSource(Name = "MyCompanyEventSource")]
public class MyEventSource : EventSource
{
public static MyEventSource Log = new MyEventSource();
[Event(250, Message = "MESSAGE FROM EVENT SOURCE", Level = EventLevel.Warning)]
public void MessageFromEventSource()
{
WriteEvent(250);
}
}
консольное приложение:
public class Program
{
static void Main(string[] args)
{
using (var pipeline = DiagnosticPipelineFactory.CreatePipeline("myEventFlowConfig.json"))
{
SomeMethod();
Console.WriteLine("Press any key to exit...");
Console.ReadKey(intercept: true);
}
}
private static void SomeMethod()
{
MyEventSource.Log.MessageFromEventSource();
System.Diagnostics.Trace.TraceWarning("MESSAGE FROM TRACE");
}
}
в консольном приложении я использую как EventSource, так и Trace в качестве входных данных, однако в консоли отображается только Trace. Что я делаю не так с EventSource, что он не отображается в консоли?
Спасибо!
1 ответ
Я обнаружил проблему, и это был файл конфигурации. Часть источников должна находиться внутри части входов. Таким образом, в файле конфигурации должна быть только коллекция входов и выходов. Рабочая конфигурация для EventSource в качестве ввода и StdOutput в качестве вывода выглядит следующим образом:
myEventFlowConfig.json:
{
"inputs": [
{
"type": "EventSource",
"sources": [
{
"providerName": "MyCompanyEventSource",
"traceLevel": "Warning"
}
]
}
],
"outputs": [
{
"type": "StdOutput"
}
]
}