/// <summary>
        ///     Console interrupt handler
        /// </summary>
        /// <param name="ctrl">Console control code</param>
        /// <returns>true if interrupt was handled, false otherwise</returns>
        private static bool ConsoleHandler(ConsoleInterrupt.CtrlTypes ctrl)
        {
            // Only handle ctrl+c
            if (ctrl != ConsoleInterrupt.CtrlTypes.CtrlCEvent)
            {
                return(false);
            }

            // Detach this handler
            ConsoleInterrupt.SetConsoleCtrlHandler(ConsoleHandler, false);

            // Cancel running tasks
            s_cancellationTokenSource.Cancel();

            // Yes, we handled the interrupt
            return(true);
        }
        private static void Main(string[] args)
        {
            // Capture ctrl+c to stop process
            ConsoleInterrupt.SetConsoleCtrlHandler(ConsoleHandler, true);

            s_cancellationTokenSource = new CancellationTokenSource();

            var loggers = new List <ILogger>
            {
                new FileLogger("trace.log")
                {
                    Level = 4
                },
                new FileLogger("debug.log")
                {
                    Level = 3
                },
                new FileLogger("info.log")
                {
                    Level = 2
                },
                new FileLogger("error.log")
                {
                    Level = 1
                },
                new ConsoleLogger {
                    Level = 4
                }
            };

            var logger = new MultiLogger(loggers);

            // RunEmulator(logger);

            RunValidator(logger, args);
        }