コード例 #1
0
 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);
 }
コード例 #2
0
        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();
            }
        }