/// <summary> /// Logs the request sent to server and corresponding response /// </summary> /// <param name="request"></param> /// <param name="response"></param> /// <param name="durationMs"></param> private void LogRequest(IRestRequest request, IRestResponse response, double durationMs) { var requestToLog = new RequestToLog { resource = request.Resource, // Parameters are custom anonymous objects in order to have the parameter type as a nice string // otherwise it will just show the enum value parameters = request.Parameters.Select(parameter => new RequestParameter { name = parameter.Name, value = parameter.Value, type = parameter.Type.ToString() }), // ToString() here to have the method as a nice string otherwise it will just show the enum value method = request.Method.ToString(), // This will generate the actual Uri used in the request uri = restClient.BuildUri(request) }; var responseToLog = new ResponseToLog { statusCode = response.StatusCode, content = response.Content, headers = response.Headers, // The Uri that actually responded (could be different from the requestUri if a redirection occurred) responseUri = response.ResponseUri, errorMessage = response.ErrorMessage, durationMs = durationMs }; this.logger.LogRequest(requestToLog, responseToLog, durationMs); }
public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs) { Console.WriteLine(string.Format("Request completed in {0} ms, Request: {1}, Response: {2}", durationMs, JsonConvert.SerializeObject(requestToLog, Formatting.Indented), JsonConvert.SerializeObject(responseToLog, Formatting.Indented))); }
/// <summary> /// Logs the request sent to server and corresponding response /// </summary> /// <param name="request"></param> /// <param name="response"></param> /// <param name="durationMs"></param> private void LogRequest(HttpRequestMessage request, ResponseResult response, double durationMs) { var requestToLog = new RequestToLog { resource = request.RequestUri.PathAndQuery, // Parameters are custom anonymous objects in order to have the parameter type as a nice string // otherwise it will just show the enum value parameters = request.Headers.Select(parameter => new RequestParameter { name = parameter.Key, value = parameter.Value, type = parameter.GetType().ToString() }), // ToString() here to have the method as a nice string otherwise it will just show the enum value method = request.Method.ToString(), // This will generate the actual Uri used in the request uri = request.RequestUri }; var responseToLog = new ResponseToLog { statusCode = response.StatusCode, content = response.Content, headers = response.Headers.ToDictionary(o => o.Key, o => string.Join(Environment.NewLine, o.Value)), // The Uri that actually responded (could be different from the requestUri if a redirection occurred) responseUri = response.Request.RequestUri, errorMessage = response.ErrorMessage, durationMs = durationMs }; logger.LogRequest(requestToLog, responseToLog, durationMs); }
public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs) { if (!this.logger.IsEnabled(LogLevel.Trace)) { return; } var msg = new StringBuilder(); msg.AppendFormat("{0}ms\n", durationMs); msg.AppendFormat("--> {0} {1} : {2}\n", requestToLog.method, requestToLog.uri, requestToLog.resource); foreach (var param in requestToLog.parameters) { msg.AppendFormat(" {0}: {1}\n", param.name, param.value); } msg.AppendFormat("<-- {0}\n", responseToLog.statusCode); foreach (var header in responseToLog.headers) { msg.AppendFormat(" {0}: {1}\n", header.Name, header.Value); } msg.AppendLine(); if (responseToLog.errorMessage != null && responseToLog.errorMessage != "") { msg.AppendFormat("Err: {0}", responseToLog.errorMessage); } else { msg.Append(responseToLog.content); } this.logger.LogTrace(msg.ToString()); }
public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs) { var sb = new StringBuilder("Request completed in "); sb.Append(durationMs); sb.AppendLine(" ms"); sb.AppendLine(); sb.AppendLine("- - - - - - - - - - BEGIN REQUEST - - - - - - - - - -"); sb.AppendLine(); sb.Append(requestToLog.method); sb.Append(' '); sb.Append(requestToLog.uri.ToString()); sb.AppendLine(" HTTP/1.1"); var requestHeaders = requestToLog.parameters; requestHeaders = requestHeaders.OrderByDescending(p => p.name == "Host"); foreach (var item in requestHeaders) { sb.Append(item.name); sb.Append(": "); sb.AppendLine(item.value.ToString()); } sb.AppendLine(); sb.AppendLine(); sb.AppendLine("- - - - - - - - - - END REQUEST - - - - - - - - - -"); sb.AppendLine(); sb.AppendLine("- - - - - - - - - - BEGIN RESPONSE - - - - - - - - - -"); sb.AppendLine(); sb.Append("HTTP/1.1 "); sb.Append((int)responseToLog.statusCode); sb.Append(' '); sb.AppendLine(responseToLog.statusCode.ToString()); var responseHeaders = responseToLog.headers; foreach (var item in responseHeaders) { sb.Append(item.Name); sb.Append(": "); sb.AppendLine(item.Value.ToString()); } sb.AppendLine(); sb.AppendLine(); sb.AppendLine(responseToLog.content); sb.AppendLine(responseToLog.errorMessage); sb.AppendLine("- - - - - - - - - - END RESPONSE - - - - - - - - - -"); Console.Out.WriteLine(sb.ToString()); }
public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs) { var sb = new StringBuilder(); sb.AppendLine("My logger says:"); sb.Append("statusCode: "); sb.AppendLine(responseToLog.statusCode.ToString()); sb.AppendLine(); sb.AppendLine("Response: "); sb.Append(responseToLog.content); Console.WriteLine(sb.ToString()); }
public async Task Invoke(HttpContext httpContext, GoCanvasLoggingDbContext dbContext) { if (httpContext.Request.Path.HasValue) { if (httpContext.Request.Path.Value.Contains("api/submission/new")) { RequestToLog rtl = new RequestToLog(httpContext); rtl.Save(dbContext); MemoryStream ms = (MemoryStream)httpContext.Request.Body; ms.Seek(0, SeekOrigin.Begin); httpContext.Request.Body = ms; } } await _next(httpContext); }
public void LogRequest(RequestToLog requestToLog, ResponseToLog responseToLog, double durationMs) { if (responseToLog.statusCode == HttpStatusCode.OK) { foreach (var header in requestToLog.parameters) { if (!string.Equals(header.name, "partNumber")) { continue; } if (header.value == null) { continue; } int.TryParse(header.value.ToString(), out var partNumber); //minio遇到上传文件大于5MB时,会进行分块传输,这里就是当前块的编号(递增) Messenger.Default.Send(partNumber, "process"); //发送给主界面计算上传进度 break; } } }