void WriteUnhandledActionException(ActionItem a, Exception ex, bool writeProgress = true, bool writeLog = true) { //todo: serialize exception to composite string string context = "Synapse.Core PlanRuntime"; string message = $"An unhandled exeption occurred in {a.Name}, Plan/Action Instance: {InstanceId}/{a.InstanceId}. Message: {ex.Message}."; if (writeProgress) { HandlerProgressCancelEventArgs e = new HandlerProgressCancelEventArgs(context: context, message: message, status: StatusType.Failed, id: a.InstanceId, sequence: Int32.MaxValue - 100, cancel: false, ex: ex) { ActionName = a.Name }; rt_Progress(this, e); } if (writeLog) { LogMessageEventArgs e = new LogMessageEventArgs(context: context, message: message, level: LogLevel.Fatal, ex: ex); rt_LogMessage(this, e); } }
void p_ErrorDataReceived(object sender, DataReceivedEventArgs e) { if (e.Data != null) { string data = CryptoHelpers.Decode(e.Data); try { HandlerProgressCancelEventArgs args = HandlerProgressCancelEventArgs.DeserializeSimple(data, true); OnProgress(args); } catch { try { LogMessageEventArgs args = LogMessageEventArgs.DeserializeSimple(data, true); OnLogMessage(args); } catch { throw new Exception("Could not deserialize output into known args type"); } } } }
private void rt_LogMessage(object sender, LogMessageEventArgs e) { OnLogMessage(e); }
protected virtual void OnLogMessage(LogMessageEventArgs e) { LogMessage?.Invoke(this, e); }
protected virtual void OnLogMessage(string context, string message, LogLevel level = LogLevel.Info, Exception ex = null) { LogMessageEventArgs args = new LogMessageEventArgs(context, message, level, ex); LogMessage?.Invoke(this, args); }
public static LogMessageEventArgs DeserializeSimple(string s, bool asYaml = false) { LogMessageEventArgs args = FromYaml(s); return(args); }