/// <summary> /// The log exception. /// </summary> /// <param name="ex"> /// The exception. /// </param> public static void LogException(FinancesException ex) { if (ex == null) { return; } var logSource = ConfigurationManager.AppSettings["EventViewerLogger.Source"]; bool logEnable; bool.TryParse(ConfigurationManager.AppSettings["EventViewerLogger.Enabled"], out logEnable); if (!logEnable) { return; } try { EventLog.WriteEntry( logSource, JsonConvert.SerializeObject(ex, Formatting.Indented), EventLogEntryType.Error); } catch { // do nothing it just save log } }
/// <summary> /// The process action async. /// </summary> /// <param name="request"> /// The request. /// </param> /// <param name="method"> /// The method. /// </param> /// <typeparam name="TReq"> /// Request type. /// </typeparam> /// <typeparam name="TResp"> /// Response type. /// </typeparam> /// <returns> /// The response. /// </returns> protected async Task <HttpResponseMessage> ProcessActionAsync <TReq, TResp>(TReq request, Func <TReq, Task <TResp> > method) { var output = new ActionResponse <TResp>(); var statusCode = HttpStatusCode.OK; try { output.HasError = false; output.Results = await method(request); } catch (Exception ex) { var financesException = new FinancesException(ex.GetType().Name, ex); EventViewerLogger.LogException(financesException); output.ErrorMessage = ex.Message; output.ErrorGuid = financesException.ErrorCode.ToString(); output.HasError = true; statusCode = HttpStatusCode.InternalServerError; } return(this.Request.CreateResponse(statusCode, output)); }