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)
            };
        }
Example #2
0
        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
                );
        }