protected override void ReadApplicationSettings() { base.ReadApplicationSettings(); bool result; if (bool.TryParse(ConfigurationManager.AppSettings["clearArchivedDumpFilesOnStartup"], out result) & result) { MiniDumpProvider.ClearArchivedDumpFiles(OculiService.PersistencePath); } bool.TryParse(ConfigurationManager.AppSettings["createCrashDumpsOnShutdown"], out this.createDumpsAtShutdown); int.TryParse(ConfigurationManager.AppSettings["maxLogFileSizeBytes"], out OculiServiceLogger.MaxLogFileSizeBytes); }
private void AppDomainUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e) { if (!e.IsTerminating) { return; } using (LogicalOperation.Create(string.Format("An unhandled exception occurred in AppDomain: [{0}]", (object)AppDomain.CurrentDomain.FriendlyName), new object[0])) { try { if (e != null && e.ExceptionObject != null) { if (e.ExceptionObject is Exception) { this.loader.Logger.Critical((Exception)e.ExceptionObject); } else { this.loader.Logger.Critical("Unknown error: " + e.ExceptionObject.ToString()); } } else { this.loader.Logger.Critical("Malformed unknown error"); } } finally { string filepath = Path.Combine(OculiService.PersistencePath, string.Format(OculiService.MiniDumpFormatString, (object)DateTime.UtcNow.ToString("yyyy_MM_dd_HH_mm_ss"))); using (LogicalOperation.Create(string.Format("Writing crash dump to: [{0}]", (object)filepath), new object[0])) { int num = MiniDumpProvider.Write(filepath); if (num != 0) { this.loader.Logger.Critical(string.Format("Failed to write crash dump with error code: {0}", (object)num)); } this.loader.Logger.Verbose("Crash dump written successfully"); } } } }