static void Main() { IObservable <EventRecord> evtx = EvtxObservable.FromLog("Application"); IDisposable d = evtx.Subscribe(e => Console.WriteLine(e.FormatDescription())); EventLog log = new EventLog("Application"); log.Source = "EvtxRaw_RealTime"; for (int i = 0; i < 5; i++) { log.WriteEntry("test " + i); } Console.ReadLine(); d.Dispose(); }
public static string EventLogWithTx() { //http://blogs.endjin.com/2014/05/event-stream-manipulation-using-rx-part-2/ return(ExecuteVoidCommand(() => { //NuGet package Tx to read from Windows Performance counters var perfCounterStream = PerfCounterObservable.FromRealTime(TimeSpan.FromSeconds(1), new[] { @"\Processor(_Total)\% Processor Time", @"\Memory(_Total)\% Committed Bytes In Use", @"\Memory(_Total)\Available MBytes" }) .Buffer(TimeSpan.FromSeconds(1)); perfCounterStream.Subscribe(); //NuGet package Tx to read from Windows Event Log var eventStream = EvtxObservable.FromLog("TestLog") .Merge(EvtxObservable.FromLog("TestLog2")) .Select(eventRecord => new Event() { Record = eventRecord }) .ComposeLatest(perfCounterStream, (evt, perfSamples) => { evt.PerformanceSamples.AddRange(perfSamples); return evt; }) .Buffer(TimeSpan.FromSeconds(2)); using (eventStream.Subscribe(new EventObserver())) { Console.WriteLine("Press any key to unsubscribe"); Console.ReadKey(); } })); }