static void CheckDefaultStructureAndPredicate(LogifyAlert client, Predicate <IExceptionReportSender> predicate) { IExceptionReportSender sender = ExceptionLoggerFactory.Instance.PlatformReportSender; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(EmptyBackgroundExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); sender = ((EmptyBackgroundExceptionReportSender)sender).InnerSender; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(CompositeExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); CompositeExceptionReportSender compositeSender = (CompositeExceptionReportSender)sender; CheckSenderConsistency(client, compositeSender); predicate(compositeSender); Assert.AreEqual(true, compositeSender.Senders != null); Assert.AreEqual(2, compositeSender.Senders.Count); sender = compositeSender.Senders[0]; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(WebExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); sender = compositeSender.Senders[1]; Assert.AreEqual(true, sender != null); Assert.AreEqual(typeof(OfflineDirectoryExceptionReportSender), sender.GetType()); CheckSenderConsistency(client, sender); predicate(sender); }
void ApplyRecursively <TSender>(IExceptionReportSender sender, Action <TSender> action) where TSender : class { if (sender == null) { return; } TSender typedSender = sender as TSender; if (typedSender != null) { action(typedSender); } IExceptionReportSenderWrapper wrapper = sender as IExceptionReportSenderWrapper; if (wrapper != null) { ApplyRecursively <TSender>(wrapper.InnerSender, action); } CompositeExceptionReportSender composite = sender as CompositeExceptionReportSender; if (composite != null) { if (composite.Senders != null && composite.Senders.Count > 0) { int count = composite.Senders.Count; for (int i = 0; i < count; i++) { ApplyRecursively <TSender>(composite.Senders[i], action); } } } }
void CheckReportToDevExpressFileNameSpecified(IExceptionReportSender rootSender) { const string apiKey = "12345678FEE1DEADBEEF4B1DBABEFACE"; const string serviceUrl = "https://logify.devexpress.com"; EmptyBackgroundExceptionReportSender root = rootSender as EmptyBackgroundExceptionReportSender; Assert.AreEqual(true, root != null); Assert.AreEqual(apiKey, root.ApiKey); Assert.AreEqual(serviceUrl, root.ServiceUrl); CompositeExceptionReportSender composite = root.InnerSender as CompositeExceptionReportSender; Assert.AreEqual(true, composite != null); Assert.AreEqual(apiKey, composite.ApiKey); Assert.AreEqual(serviceUrl, composite.ServiceUrl); ExternalProcessExceptionReportSender externalSender = composite.Senders[0] as ExternalProcessExceptionReportSender; Assert.AreEqual(true, externalSender != null); Assert.AreEqual(apiKey, externalSender.ApiKey); Assert.AreEqual(serviceUrl, externalSender.ServiceUrl); WinFormsExceptionReportSender winFormsSender = composite.Senders[1] as WinFormsExceptionReportSender; Assert.AreEqual(true, winFormsSender != null); Assert.AreEqual(apiKey, winFormsSender.ApiKey); Assert.AreEqual(serviceUrl, winFormsSender.ServiceUrl); //FileExceptionReportSender file = composite.Senders[2] as FileExceptionReportSender; //Assert.AreEqual(true, file != null); //Assert.AreEqual(apiKey, file.ApiKey); //Assert.AreEqual(serviceUrl, file.ServiceUrl); //Assert.AreEqual("exception.log", file.FileName); }
//const string serviceInfo = "/RW+Wzq8wasJP6LuHZcAbT2ShAvheOdnptsr/RI8zeCCfF6a+zXeWOhG0STFbxoLDjpzWj49DMTp0KZXufp4gz45nsSUwhcnrJC280vWliI="; protected void ReportToDevExpressCore(string uniqueUserId, string lastExceptionReportFileName, Assembly asm, IDictionary <string, string> customData) { IExceptionReportSender sender = ExceptionLoggerFactory.Instance.PlatformReportSender; if (sender != null && sender.CanSendExceptionReport()) { return; } IExceptionReportSender reportSender = CreateExceptionReportSender(); CompositeExceptionReportSender compositeSender = reportSender as CompositeExceptionReportSender; if (compositeSender == null) { compositeSender = new CompositeExceptionReportSender(); compositeSender.Senders.Add(reportSender); } /*if (!String.IsNullOrEmpty(lastExceptionReportFileName)) { * FileExceptionReportSender fileSender = new FileExceptionReportSender(); * fileSender.FileName = lastExceptionReportFileName; * compositeSender.Senders.Add(fileSender); * }*/ string[] info = GetServiceInfo(asm); if (info != null && info.Length == 2) { this.ServiceUrl = info[0]; // "http://logify.devexpress.com"; this.ApiKey = info[1]; // "12345678FEE1DEADBEEF4B1DBABEFACE"; //if (this.ServiceUrl.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase)) { if (CultureInfo.InvariantCulture.CompareInfo.IsPrefix(this.ServiceUrl, "http://", CompareOptions.IgnoreCase)) { this.ServiceUrl = "https://" + this.ServiceUrl.Substring("http://".Length); } } //this.MiniDumpServiceUrl = "http://logifydump.devexpress.com/"; compositeSender.ServiceUrl = this.ServiceUrl; //compositeSender.ApiKey = "dx$" + logId; compositeSender.ApiKey = this.ApiKey; //compositeSender.MiniDumpServiceUrl = this.MiniDumpServiceUrl; this.AppName = "DevExpress Demo or Design Time"; this.AppVersion = DetectDevExpressVersion(asm); this.UserId = uniqueUserId; this.ConfirmSendReport = false; this.CollectBreadcrumbsCore = false; if (customData != null) { this.customData = customData; } //TODO: Config.CollectMiniDump = true; //apply values to config ExceptionLoggerFactory.Instance.PlatformReportSender = CreateBackgroundExceptionReportSender(compositeSender); }
protected override IExceptionReportSender CreateExceptionReportSender() { IExceptionReportSender defaultSender = CreateConfiguredPlatformExceptionReportSender(); if (ConfirmSendReport) { return(defaultSender); } CompositeExceptionReportSender sender = new CompositeExceptionReportSender(); sender.StopWhenFirstSuccess = true; //sender.Senders.Add(new ExternalProcessExceptionReportSender()); sender.Senders.Add(defaultSender); sender.Senders.Add(new OfflineDirectoryExceptionReportSender()); return(sender); }