private async void lapTimer_GeolocatorUnrecoverableError(LapTimer sender, GeolocationErrorEventArgs args) { string errorId = string.Empty; if (args.Exception != null) { var extraCrashData = new CrashExtraData(AppConstants.BUGSENSE_EXTRADATA_DEVICENAME, args.DeviceName); errorId = await BugSenseHandler.Instance.LogExceptionWithId(App.MobileService.CurrentUser, args.Exception, extraCrashData); } StopLapTimer(string.Format(args.DeviceName.Equals(AppConstants.DEFAULT_INTERNALGPS_NAME, StringComparison.OrdinalIgnoreCase) ? AppResources.Text_Error_UnableToCommunicateWithInternalGpsDevice : AppResources.Text_Error_UnableToCommunicateWithExternalGpsDevice, errorId)); }
public void LogError(Exception e, string comment, string commentKey = null) { if (e == null) return; BugSenseHandler.Instance.ClearCrashExtraData(); if (e.Data != null && e.Data.Contains("DetailedStack")) { var extraData = new CrashExtraData() { Key = "DetailedStack", Value = (string)e.Data["DetailedStack"] }; BugSenseHandler.Instance.AddCrashExtraData(extraData); } if (!string.IsNullOrEmpty(comment)) { if (string.IsNullOrEmpty(commentKey)) commentKey = "Description"; var extraData = new CrashExtraData() { Key = commentKey, Value = comment }; BugSenseHandler.Instance.AddCrashExtraData(extraData); } var wex = e as WebExceptionEx; if (wex != null) BugSenseHandler.Instance.SendExceptionAsync(wex, "RequestedURL", wex.URL); else BugSenseHandler.Instance.SendExceptionAsync(e); FlurryWP8SDK.Api.LogError(comment, e); }
/// <summary> /// The log method. /// </summary> /// <param name="ex"> /// The exception got. /// </param> /// <param name="crashExtraData"> /// The crash Extra Data. /// </param> /// <param name="message"> /// The message. /// </param> /// <param name="aditionaMessage"> /// The aditiona Message. /// </param> /// <returns> /// The <see cref="Task"/> object. /// </returns> public async Task LogAsync(Exception ex, Dictionary<string, string> crashExtraData = null, string message = "", string aditionaMessage = "") { try { Debug.WriteLine(ex.ToString()); var messageToSend = message ?? string.Empty; var additionalMessageToSend = aditionaMessage ?? string.Empty; if (crashExtraData != null) { foreach (var data in crashExtraData) { var extraData = new CrashExtraData(data.Key, data.Value); BugSenseHandler.Instance.AddCrashExtraData(extraData); } } var logResult = await BugSenseHandler.Instance.LogExceptionAsync(ex, messageToSend, additionalMessageToSend); Debug.WriteLine("Bug reported:"); Debug.WriteLine(string.Concat("LogType: ", logResult.LogType)); Debug.WriteLine(string.Concat("Description: ", logResult.Description)); Debug.WriteLine(string.Concat("ExceptionError: ", logResult.ExceptionError)); Debug.WriteLine(string.Concat("ResultState: ", logResult.ResultState)); } catch (Exception exception) { // Bug sense can throw an exception // TODO test Debug.WriteLine(exception.ToString()); } }
/// <summary> /// The throw exception with data async. /// </summary> /// <returns> /// The <see cref="Task"/>. /// </returns> /// <exception cref="NullReferenceException"> /// The exception.</exception> private async Task ThrowExceptionWithDataAsync() { Exception exception = null; try { throw new NullReferenceException(string.Concat("ThrowExceptionWithDataAsync: ", DateTime.Now)); } catch (Exception ex) { exception = ex; } if (exception != null) { var data = new CrashExtraData(); var dic = new Dictionary<string, string> { { "mykey", "mydata" } }; await _logManager.LogAsync(exception, crashExtraData: dic, aditionaMessage: DateTime.Now.ToString()); } }