예제 #1
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request,
                                                                      CancellationToken cancellationToken)
        {
            var guid = Guid.NewGuid();

            LoggingQueue.Add(new LogMessage
            {
                LogLevel   = LogLevel.Log,
                Message    = $"Request coming in with Guid: {guid.ToString()}",
                TimeStamp  = DateTimeExtensions.BeiJingNow(),
                RequestUrl = request.RequestUri.ToString(),
                PayLoad    = request.RequestUri.ToString().Contains("image") ? "" : request.Content?.ReadAsStringAsync().Result ?? ""
            });

            var response = await base.SendAsync(request, cancellationToken);

            LoggingQueue.Add(new LogMessage
            {
                LogLevel   = LogLevel.Log,
                Message    = $"Request going out with Guid: {guid.ToString()}",
                TimeStamp  = DateTimeExtensions.BeiJingNow(),
                RequestUrl = request.RequestUri.ToString(),
                PayLoad    = response.Content?.ReadAsStringAsync().Result ?? ""
            });

            return(response);
        }
예제 #2
0
        public override void Handle(ExceptionHandlerContext context)
        {
            base.Handle(context);

            var exception = context.Exception;

            ErrorModel errorModel;

            if (exception is ApiException)
            {
                var apiException = exception as ApiException;
                errorModel = GetErrorModel(apiException);
            }
            else
            {
                errorModel = new ErrorModel
                {
                    ErrorCode = ApiErrorCode.Unknown,
                    Message   = ApiErrorCode.Unknown.ToString()
                };
            }

            var message = exception is ApiException ? errorModel.Message : exception.Message;

            Exception innerEx = exception.InnerException;

            while (innerEx?.InnerException != null)
            {
                innerEx = innerEx.InnerException;
            }

            LoggingQueue.Add(new LogMessage
            {
                LogLevel   = LogLevel.Error,
                Message    = $"Error: Message: { message } Stacktrace: {exception.StackTrace} InnerException: {innerEx?.Message} InnerExceptionStackTrace: {innerEx?.StackTrace}",
                RequestUrl = context.Request.RequestUri.ToString(),
                TimeStamp  = DateTimeExtensions.BeiJingNow(),
                PayLoad    = context.Request.Content?.ReadAsStringAsync().Result ?? ""
            });

            context.Result = new ResponseMessageResult(context.Request.CreateResponse(HttpStatusCode.OK, errorModel));
        }