public void OnException(ExceptionContext context) { var controller = context.RouteData.Values["controller"]; var action = context.RouteData.Values["action"]; int httpCode = 500; ApiException ex; ExceptionType type = ExceptionType.None; string message = "Internal server error. Try again."; ClientSideException clientSideException = context.Exception as ClientSideException; if (clientSideException != null) { type = clientSideException.ExceptionType; httpCode = 400; message = clientSideException.Message; _logger.WriteWarningAsync("ApiException", "EthereumApi", $"Controller: {controller}, action: {action}", context.Exception).Wait(); } else { _logger.WriteErrorAsync("ApiException", "EthereumApi", $"Controller: {controller}, action: {action}", context.Exception).Wait(); } ex = new ApiException { Error = new ApiError { Code = type, Message = message } }; context.Result = new ObjectResult(ex) { StatusCode = httpCode, DeclaredType = typeof(ApiException) }; }
protected void LogClientSideError(ILogger <IController> logger, LogItem logItem) { var customData = new List <KeyValuePair <string, object> >(); customData.Add(new KeyValuePair <string, object>("UserName", GetUser(CLAIM_UNIQUE_NAME))); customData.Add(new KeyValuePair <string, object>("UserId", GetUser(CLAIM_NAME_ID))); customData.Add(new KeyValuePair <string, object>("Url", logItem.Url)); //customData.Add(new KeyValuePair<string, object>("Parameter", logItem.Parameter)); customData.Add(new KeyValuePair <string, object>("StackTrace", logItem.Stack)); var exception = new ClientSideException(logItem.Stack); var level = (LogLevel)Enum.Parse(typeof(LogLevel), logItem.Level); logger.Log( level, 1, customData, exception, (s, e) => "Angular Error : " + logItem.Message ); }