private static void Main(string[] args) { SetupConsole(); try { var config = new FilterConfig("Config\\Filter.xml"); //Logger foreach (var logger in config.Logger) { StaticLogger.Create(logger.Key); StaticLogger.SetLogLevel(logger.Value.Ordinal, logger.Key); } StaticLogger.SetInstance(); //StaticLogger.Instance.Trace("Trace"); //StaticLogger.Instance.Debug("Debug"); //StaticLogger.Instance.Info("Info"); //StaticLogger.Instance.Warn("Warn"); //StaticLogger.Instance.Error("Error"); //StaticLogger.Instance.Fatal("Fatal"); //Services _serviceCollection = new ServiceCollection(); foreach (var serviceSettings in config.Services) { var service = new Service(serviceSettings.Value); _serviceCollection.Add(service); } //Plugins var pluginManager = new PluginManager(config.Plugins); foreach (var service in _serviceCollection) { pluginManager.RegisterService(service); } var pluginCount = pluginManager.Load(); StaticLogger.Instance.Info($"{pluginCount} plugins registered."); //Start services foreach (var service in _serviceCollection) { var result = service.Start(); if (result == false) { StaticLogger.Instance.Fatal($"Failed to start {service.Settings.Name}, check Filter.xml and prev. errors"); } } StaticLogger.Instance.Info("Successfully initilized."); Console.Beep(); while (true) { var line = Console.ReadLine(); if (line == "exit" || line == "quit") { break; } } foreach (var service in _serviceCollection) { service.Stop(); } } catch (Exception ex) { Console.Beep(); Console.WriteLine("Something f****d up really hard, please check Filter.xml"); Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); Console.Beep(); Console.ReadLine(); } }