private Task <bool> SendToLog(RequestResponseLogMetadata logMetadata) { new Thread(new ThreadStart(() => { LogManager.WriteLog <FileLogger>(Newtonsoft.Json.JsonConvert.SerializeObject(logMetadata), $"{logMetadata.ApiActionName} ( Request-{logMetadata.RequestTimestamp?.ToTimeStamp()} Response-{logMetadata.ResponseTimestamp?.ToTimeStamp()} ).txt"); })).Start(); return(Task.FromResult(true)); }
private RequestResponseLogMetadata BuildRequestMetadata(RequestResponseLogMetadata logMetadata, HttpRequestMessage request) { var content = request.Content.ReadAsStringAsync(); var result = content.Result; logMetadata.RequestContent = result; logMetadata.RequestMethod = request.Method.Method; logMetadata.RequestTimestamp = DateTime.Now; logMetadata.RequestUri = request.RequestUri.ToString(); return(logMetadata); }
private RequestResponseLogMetadata BuildResponseMetadata(RequestResponseLogMetadata logMetadata, HttpResponseMessage response) { var content = response.Content.ReadAsStringAsync(); var result = content.Result; logMetadata.ResponseContent = result; logMetadata.ResponseStatusCode = response.StatusCode; logMetadata.ResponseTimestamp = DateTime.Now; logMetadata.ResponseContentType = response.Content.Headers.ContentType.MediaType; return(logMetadata); }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var logMetadata = new RequestResponseLogMetadata { ApiActionName = request.RequestUri.GetApiAction() }; logMetadata = BuildRequestMetadata(logMetadata, request); var response = await base.SendAsync(request, cancellationToken); logMetadata = BuildResponseMetadata(logMetadata, response); await SendToLog(logMetadata); return(response); }