public IActionResult Post(LogErrorCreateRequestModel model) { try { if (model == null) { return(BadRequest()); } LogCreateRequestModel createErrorModel = _service.ParseExceptionToExceptionModel(model); if (createErrorModel == null) { return(BadRequest(model)); } var result = _service.Create(createErrorModel); return(Ok(result)); } catch (Exception e) { try { _service.SendLogError(e); } catch (System.Exception ex) { return(StatusCode(503, ex.Message)); } return(StatusCode(503, e)); } }
public void SendLogError(Exception e, string appCode) { try { LogErrorCreateRequestModel error = new LogErrorCreateRequestModel() { Exception = e, AppCode = appCode, Serverity = 5 }; LogCreateRequestModel createError = ParseExceptionToExceptionModel(error); Create(createError); } catch (Exception) { throw; } }
public LogCreateRequestModel ParseExceptionToExceptionModel(LogErrorCreateRequestModel model) { try { var ex = new LogCreateRequestModel(); int index = model.Exception.StackTrace.IndexOf("line"); int index2 = model.Exception.StackTrace.LastIndexOf("\\"); int index3 = model.Exception.StackTrace.IndexOf("in "); ex.Message = model.Exception.Message; if (model.Exception.InnerException != null) { ex.Message += "\n" + model.Exception.InnerException.Message; if (model.Exception.InnerException.InnerException != null) { ex.Message += "\n" + model.Exception.InnerException.InnerException.Message; } } var link = model.Exception.StackTrace.Substring(index3 + 3).Replace(model.Exception.StackTrace.Substring(index2), ""); int index4 = (link).LastIndexOf("\\"); ex.ProjectName = (link).Substring(index4 + 1); ex.FileName = model.Exception.StackTrace.Substring(index2 + 1).Replace(":" + model.Exception.StackTrace.Substring(index), ""); var line = model.Exception.StackTrace.Substring(index + 5); var nextSpace = line.IndexOf(' '); if (nextSpace > 0) { line = line.Remove(nextSpace); } ex.LineCode = Int32.Parse(line); ex.AppCode = model.AppCode; //ex.LogType = (model.LogType < 1 || model.LogType > 3) ? 3 : model.LogType; ex.LogType = 3; ex.Serverity = model.Serverity; return(ex); } catch (Exception) { throw; } }