private async Task LogWithContent(HttpContext context, string requestId) { // Replace Request Body with own MemoryStream var originalRequestBody = context.Request.Body; var requestBodyStream = new MemoryStream(); await context.Request.Body.CopyToAsync(requestBodyStream); requestBodyStream.Seek(0, SeekOrigin.Begin); _logger.LogTrace(RequestLoggerHelper.Format(context.Request, requestId, requestBodyStream, siteConfig.BaseUrlPrefix)); requestBodyStream.Seek(0, SeekOrigin.Begin); context.Request.Body = requestBodyStream; // Replace Response Body with own MemoryStream var bodyStream = context.Response.Body; var responseBodyStream = new MemoryStream(); context.Response.Body = responseBodyStream; // Call next Middleware await next(context); context.Request.Body = originalRequestBody; responseBodyStream.Seek(0, SeekOrigin.Begin); _logger.LogTrace(RequestLoggerHelper.Format(context.Response, requestId, responseBodyStream)); responseBodyStream.Seek(0, SeekOrigin.Begin); await responseBodyStream.CopyToAsync(bodyStream); }
public void OnException(ExceptionContext context) { var message = "Internal Server Error"; if (context.Exception is Common.Exceptions.SlambyException) { message = context.Exception.Message; } var response = ErrorsModel.Create(message); context.Result = new ObjectResult(response) { StatusCode = 500, DeclaredType = typeof(ErrorsModel) }; logger.LogError(new EventId(0), context.Exception, "GlobalExceptionFilter"); //log the request for this error if it had // Replace Request Body with own MemoryStream var originalRequestBody = context.HttpContext.Request.Body; var requestBodyStream = new MemoryStream(); context.HttpContext.Request.Body.CopyTo(requestBodyStream); requestBodyStream.Seek(0, SeekOrigin.Begin); logger.LogInformation(RequestLoggerHelper.Format(context.HttpContext.Request, "GlobalExceptionFilter", requestBodyStream, siteConfig.BaseUrlPrefix)); requestBodyStream.Seek(0, SeekOrigin.Begin); context.HttpContext.Request.Body = requestBodyStream; context.Exception = null; // mark exception as handled }
private async Task LogWithoutContent(HttpContext context, string requestId) { _logger.LogTrace(RequestLoggerHelper.Format(context.Request, requestId, null, siteConfig.BaseUrlPrefix)); // Call next Middleware await next(context); _logger.LogTrace(RequestLoggerHelper.Format(context.Response, requestId, null)); }