private static void ConfigureProcessTaskForLogging(ProcessTask task, MarkupStreamWriter writer) { task.Started += delegate { writer.BeginSection(String.Format("Run Process: {0} {1}", task.ExecutablePath, task.Arguments)); writer.WriteLine("Working Directory: {0}", task.WorkingDirectory); writer.BeginMarker(Marker.Monospace); }; task.ConsoleOutputDataReceived += delegate(object sender, DataReceivedEventArgs e) { if (e.Data != null) { writer.WriteLine(e.Data); } }; task.ConsoleErrorDataReceived += delegate(object sender, DataReceivedEventArgs e) { if (e.Data != null) { writer.WriteLine(e.Data); } }; task.Aborted += delegate { if (task.IsRunning) { writer.BeginSection("Abort requested. Killing the process!").Dispose(); } }; task.Terminated += delegate { writer.End(); writer.WriteLine("Exit Code: {0}", task.ExitCode); writer.End(); }; }