Example #1
0
        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();
        }
Example #2
0
        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();
                }
            }));
        }