static void Main(string[] args) { bool coloredLogging = true; bool printHelp = false; bool printVersion = false; // Name the main thread Thread.CurrentThread.Name = "Main"; #region Command Line Argument Handling Mono.Options.OptionSet set = new Mono.Options.OptionSet() { { "nocolor", "Disable colored console logging", v => coloredLogging = false }, { "h|?|help", "Shows launch options", v => printHelp = true }, { "version", "Show version information", v => printVersion = true } }; set.Parse(args); if (printHelp) { set.WriteOptionDescriptions(Console.Out); return; } if (printVersion) { string version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); Console.WriteLine("Simian " + version); return; } #endregion Command Line Argument Handling #region log4net Setup // If error level reporting isn't enabled we assume no logger is configured and initialize a default appender if (!m_log.Logger.IsEnabledFor(log4net.Core.Level.Error)) { log4net.Appender.AppenderSkeleton appender; if (coloredLogging) { log4net.Appender.ColoredConsoleAppender coloredAppender = new log4net.Appender.ColoredConsoleAppender(); var mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Debug; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity; coloredAppender.AddMapping(mapping); mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Info; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.White; coloredAppender.AddMapping(mapping); mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Warn; mapping.BackColor = log4net.Appender.ColoredConsoleAppender.Colors.Purple; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.White; coloredAppender.AddMapping(mapping); mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Error; mapping.BackColor = log4net.Appender.ColoredConsoleAppender.Colors.Red; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.White; coloredAppender.AddMapping(mapping); appender = coloredAppender; } else { appender = new log4net.Appender.ConsoleAppender(); } appender.Layout = new log4net.Layout.PatternLayout("%timestamp [%thread] %-5level %logger - %message%newline"); appender.ActivateOptions(); BasicConfigurator.Configure(appender); m_log.Info("No log configuration found, defaulting to console logging"); } // Hook up Debug.Assert statements to log4net Debug.Listeners.Insert(0, new log4netTraceListener()); #endregion log4net Setup // Set the working directory to the application dir Directory.SetCurrentDirectory(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); // Initialize the Simian object m_simian = new Simian(); // Handle Ctrl+C Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) { e.Cancel = true; m_simian.Shutdown(); m_running = false; }; // Attempt to load modules if (m_simian.LoadModules()) { // Initialize the interactive console InteractiveConsole(); } else { m_log.Error("Application module loading failed, shutting down"); } }
static void Main(string[] args) { bool coloredLogging = true; bool printHelp = false; bool printVersion = false; // Name the main thread Thread.CurrentThread.Name = "Main"; #region Command Line Argument Handling Mono.Options.OptionSet set = new Mono.Options.OptionSet() { { "nocolor", "Disable colored console logging", v => coloredLogging = false }, { "h|?|help", "Shows launch options", v => printHelp = true }, { "version", "Show version information", v => printVersion = true } }; set.Parse(args); if (printHelp) { set.WriteOptionDescriptions(Console.Out); return; } if (printVersion) { string version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); Console.WriteLine("Simian " + version); return; } #endregion Command Line Argument Handling #region log4net Setup // If error level reporting isn't enabled we assume no logger is configured and initialize a default appender if (!m_log.Logger.IsEnabledFor(log4net.Core.Level.Error)) { log4net.Appender.AppenderSkeleton appender; if (coloredLogging) { log4net.Appender.ColoredConsoleAppender coloredAppender = new log4net.Appender.ColoredConsoleAppender(); var mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Debug; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.HighIntensity; coloredAppender.AddMapping(mapping); mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Info; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.White; coloredAppender.AddMapping(mapping); mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Warn; mapping.BackColor = log4net.Appender.ColoredConsoleAppender.Colors.Purple; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.White; coloredAppender.AddMapping(mapping); mapping = new log4net.Appender.ColoredConsoleAppender.LevelColors(); mapping.Level = log4net.Core.Level.Error; mapping.BackColor = log4net.Appender.ColoredConsoleAppender.Colors.Red; mapping.ForeColor = log4net.Appender.ColoredConsoleAppender.Colors.White; coloredAppender.AddMapping(mapping); appender = coloredAppender; } else { appender = new log4net.Appender.ConsoleAppender(); } appender.Layout = new log4net.Layout.PatternLayout("%timestamp [%thread] %-5level %logger - %message%newline"); appender.ActivateOptions(); BasicConfigurator.Configure(appender); m_log.Info("No log configuration found, defaulting to console logging"); } // Hook up Debug.Assert statements to log4net Debug.Listeners.Insert(0, new log4netTraceListener()); #endregion log4net Setup // Set the working directory to the application dir Directory.SetCurrentDirectory(Util.ExecutingDirectory()); // Initialize the Simian object m_simian = new Simian(); // Handle Ctrl+C Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) { e.Cancel = true; m_simian.Shutdown(); m_running = false; }; // Attempt to load modules if (m_simian.LoadModules()) { // Initialize the interactive console InteractiveConsole(); } else { m_log.Error("Application module loading failed, shutting down"); } }