Esempio n. 1
0
        private static int Main(string[] args)
        {
            LogManager.Init("client", Helper.GetDefaultLogsDir());

            AppDomain.CurrentDomain.UnhandledException += (sender, eventArgs) =>
            {
                var exc = eventArgs.ExceptionObject as Exception;
                if (exc != null)
                    Log.FatalException(exc, "Global Unhandled Exception occurred within {0}.", sender);
                else
                    Log.Fatal("Global Unhandled Exception ({0}) occurred within {1}.", eventArgs.ExceptionObject, sender);
            };

            try
            {
                Console.Title = string.Format("EventStore - CLIENT - {0}", DateTime.UtcNow);

                var options = new ClientOptions();
                if (!CommandLineParser.Default.ParseArguments(args, options))
                {
                    Log.Error("Error parsing arguments. Exiting...");
                    return -1;
                }

                IPAddress ipAddr;
                if (!IPAddress.TryParse(options.Ip, out ipAddr))
                {
                    Log.Error("Wrong IP address provided: {0}.", ipAddr);
                    return -1;
                }

                var systemInfo = String.Format("{0} {1}", OS.IsLinux ? "Linux" : "Windows", Runtime.IsMono ? "MONO" : ".NET");
                var startInfo = String.Join(Environment.NewLine, options.GetLoadedOptionsPairs().Select(pair => String.Format("{0} : {1}", pair.Key, pair.Value)));
                var logsDirectory = String.Format("LOGS DIRECTORY : {0}", LogManager.LogsDirectory);

                Log.Info(String.Format("{0}{1}{2}{1}{3}", logsDirectory, Environment.NewLine, systemInfo, startInfo));

                var client = new Client(options);
                var exitCode = client.Run();

                Log.Info("Exit code: {0}.", exitCode);
                return exitCode;
            }
            catch(Exception exc)
            {
                Log.ErrorException(exc, "Exception during execution of client.");
                return -1;
            }
            finally
            {
                // VERY IMPORTANT TO PREVENT DEADLOCKING ON MONO
                LogManager.Finish();
            }
        }
 public CommandProcessorContext(Client client, ILogger log, ManualResetEvent doneEvent)
 {
     Client = client;
     Log = log;
     _doneEvent = doneEvent;
 }