public static void Show(this Exception e) { // Exceptions viewer must be shown on STA thread. LogViewer.Invoke(() => { var exceptionReporter = new ExceptionReporting.ExceptionReporter(); exceptionReporter.Show(e); }); }
private void TrackUnhandledExceptions() { var reporter = new ExceptionReporting.ExceptionReporter(); reporter.Config.AppName = "ServiceMatrix"; reporter.Config.AppVersion = "2.0.2"; reporter.Config.CompanyName = "Particular Software"; reporter.Config.ContactEmail = "*****@*****.**"; reporter.Config.EmailReportAddress = "*****@*****.**"; reporter.Config.WebUrl = "http://particular.net"; reporter.Config.TitleText = "ServiceMatrix - Unexpected error"; reporter.Config.ShowFullDetail = false; reporter.Config.ShowLessMoreDetailButton = true; reporter.Config.ContactMessageTop = "[ServiceMatrix] Exception Report"; var type = typeof(TraceSourceExtensions); var field = type.GetField("ShowExceptionAction", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); field.SetValue(null, new Action <string, Exception>((s, e) => { var customMessage = ""; if (File.Exists(StatisticsManager.LoggingFile)) { using (var fileStream = new FileStream(StatisticsManager.LoggingFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var textReader = new StreamReader(fileStream)) { customMessage = textReader.ReadToEnd(); } } if (!(e is ElementAlreadyExistsException)) { if (string.IsNullOrEmpty(customMessage)) { reporter.Show(e); } else { reporter.Show(e.Message + Environment.NewLine + Environment.NewLine + "Additional Log:" + Environment.NewLine + customMessage, e); } } })); }