internal bool BeforeLog(Error error, ErrorStore store) { if (OnBeforeLog != null) { try { var args = new ErrorBeforeLogEventArgs(error); OnBeforeLog(store, args); if (args.Abort) { return(true); } } catch (Exception e) { Trace.WriteLine(e); } } return(false); }
private static void ErrorStoreOnOnBeforeLog(object sender, ErrorBeforeLogEventArgs args) { var exception = args.Error.Exception; if (exception == null || exception is ExceptionalTraceException) { return; } var fancyTraceBuilder = new StringBuilder(); try { DumpExceptionStackTrace(fancyTraceBuilder, exception); } catch (Exception ex) { if (sender is ErrorStore store) { store.Log(new Error(new ExceptionalTraceException("ExceptionalTrace failed", ex) { Data = { { "GeneratedBeforeException", fancyTraceBuilder.ToString() } }, })); } fancyTraceBuilder.Clear(); } if (fancyTraceBuilder.Length > 0) { args.Error.Detail = fancyTraceBuilder.ToString() #if DEBUG + Environment.NewLine + "----------- ORIGINAL -----------" + Environment.NewLine + args.Error.Detail #endif ; args.Error.ErrorHash = args.Error.GetHash(); } }