コード例 #1
0
ファイル: Program.cs プロジェクト: SteveHarveyUK/Blog
        static void Main()
        {
            oldCol = Console.ForegroundColor;
            SetConsoleCtrlHandler(ExitHandler, true);

            try
            {
                Console.WriteLine("**** Create EventSources ****");

                SourceA = MetricsFactory.GetCustomMetricsService("SourceA", 1.0, true);
                SourceB = MetricsFactory.GetCustomMetricsService("SourceB", 3.0, true);
                SourceC = MetricsFactory.GetCustomMetricsService("SourceC", 7.0, true);

                Console.WriteLine("**** Issue Description ****");
                Console.WriteLine(
                    "Each EventSource has is own Default Listener but it appears that ALL EventListeners get ALL EventCounter events.\r\n" +
                    "So rather than having a single highlight color per event to indicate the expected filtering,\r\n" +
                    "the following event logging will show multiple highlight colors within a single line:");
                Console.WriteLine("***************************");

                var random = new Random();
                for (int i = 0; i <= 40000; i++)
                {
                    SleepingBeauty(random.Next(10, 200));
                }

                Console.ReadKey();
            }
            finally
            {
                Console.ForegroundColor = oldCol;
            }
        }
コード例 #2
0
        protected override void OnEventWritten(EventWrittenEventArgs eventData)
        {
            lock (_outputLockObj)
            {
                var counterData = eventData.ToEventCounterData();

                var oldCol = Console.ForegroundColor;
                if (counterData == null)
                {
                    Console.ForegroundColor = MetricsFactory.GetConsoleColor(this.GetHashCode());
                    Console.Write($"EL{this.GetHashCode():x8}");
                    Console.ForegroundColor = oldCol;
                    Console.Write($" RX ED{eventData.GetHashCode():x8} => ");
                    Console.ForegroundColor = MetricsFactory.GetConsoleColor(eventData.EventSource.GetHashCode());
                    Console.Write($"ES{eventData.EventSource.GetHashCode():x8}:{eventData.EventName}");
                    Console.ForegroundColor = oldCol;
                    Console.WriteLine($"{eventData.Payload.FirstOrDefault().ToString()} ");

                    return;
                }

                // Only write to console if actual data has been reported
                if (counterData?.Count == 0)
                {
                    return;
                }

                // ReportOccurence calls pass in NaN for the metric value so we can publish different
                // patterns for ReportOccurence and ReportMetric
                if (float.IsNaN(counterData.Min))
                {
                    Console.ForegroundColor = MetricsFactory.GetConsoleColor(this.GetHashCode());
                    Console.Write($"EL{this.GetHashCode():x8}");
                    Console.ForegroundColor = oldCol;
                    Console.Write($" RX ED{counterData.EventHash:x8} => ");
                    Console.ForegroundColor = MetricsFactory.GetConsoleColor(eventData.EventSource.GetHashCode());
                    Console.Write(
                        $"ES{eventData.EventSource.GetHashCode():x8}:'{counterData.EventSource}/{counterData.EventName}'");
                    Console.ForegroundColor = oldCol;
                    Console.WriteLine($" => " +
                                      $"{counterData.Name} " +
                                      $"Count {counterData.Count}, " +
                                      $"IntervalSec: {counterData.IntervalSec}");
                }
                else
                {
                    Console.ForegroundColor = MetricsFactory.GetConsoleColor(this.GetHashCode());
                    Console.Write($"EL{this.GetHashCode():x8}");
                    Console.ForegroundColor = oldCol;
                    Console.Write($" RX ED{counterData.EventHash:x8} => ");
                    Console.Write(":");
                    Console.ForegroundColor = MetricsFactory.GetConsoleColor(eventData.EventSource.GetHashCode());
                    Console.Write(
                        $"ES{eventData.EventSource.GetHashCode():x8}:'{counterData.EventSource}/{counterData.EventName}'");
                    Console.ForegroundColor = oldCol;
                    Console.WriteLine($" => " +
                                      $"{counterData.Name} " +
                                      $"Min: {counterData.Min}, " +
                                      $"Max: {counterData.Max}, " +
                                      $"Count {counterData.Count}, " +
                                      $"Mean {counterData.Mean}, " +
                                      $"StandardDeviation: {counterData.StandardDeviation}, " +
                                      $"IntervalSec: {counterData.IntervalSec}");
                }
            }
        }