public static DaemonProcessMonitor Start(DaemonProcess process, ILogger logger = null) { logger = logger ?? Log.Default; logger.AddEntry("Monitoring {0}", process.Name); DaemonProcessMonitor result = new DaemonProcessMonitor(process, logger); process.StandardOut += (o, a) => logger.Info(((DaemonProcessEventArgs)a).Message); process.ErrorOut += (o, a) => logger.Warning(((DaemonProcessEventArgs)a).Message); process.Start(result.TryRestart); return(result); }
private void StartProcess(DaemonProcess process) { try { string key = process.ToString(); Logger.AddEntry("Starting {0}", key); process.Subscribe(Logger); _monitors.Add(key, DaemonProcessMonitor.Start(process)); } catch (Exception ex) { Logger.AddEntry("Error starting process {0}: {1}", ex, process?.ToString(), ex.Message); } }